CbmRoot
Loading...
Searching...
No Matches
CbmDeviceMcbmEventBuilderWin Class Reference

#include <CbmDeviceMcbmEventBuilderWin.h>

Inheritance diagram for CbmDeviceMcbmEventBuilderWin:
[legend]
Collaboration diagram for CbmDeviceMcbmEventBuilderWin:
[legend]

Public Member Functions

 CbmDeviceMcbmEventBuilderWin ()
 
virtual ~CbmDeviceMcbmEventBuilderWin ()
 

Protected Member Functions

virtual void InitTask ()
 
bool HandleData (FairMQParts &, int)
 
bool HandleCommand (FairMQMessagePtr &, int)
 

Private Member Functions

bool IsChannelNameAllowed (std::string channelName)
 
void Finish ()
 
bool SendEvents (FairMQParts &partsIn)
 
bool SendHistograms ()
 

Private Attributes

Bool_t fbIgnoreTsOverlap = kFALSE
 Constants.
 
Bool_t fbFillHistos = kTRUE
 Ignore data in Overlap part of the TS.
 
std::string fsEvtOverMode = "NoOverlap"
 Switch ON/OFF filling of histograms.
 
std::string fsRefDet = "kBmon"
 
std::vector< std::string > fvsAddDet = {}
 
std::vector< std::string > fvsDelDet = {}
 
std::vector< std::string > fvsSetTrigWin = {}
 
std::vector< std::string > fvsSetTrigMinNb = {}
 
std::string fsChannelNameDataInput = "unpts_0"
 message queues
 
std::string fsChannelNameDataOutput = "events"
 
std::string fsChannelNameCommands = "commands"
 
std::string fsChannelNameHistosInput = "histogram-in"
 
std::string fsChannelNameHistosConfig = "histo-conf"
 
std::string fsChannelNameCanvasConfig = "canvas-conf"
 
uint32_t fuPublishFreqTs = 100
 Histograms management.
 
double_t fdMinPublishTime = 0.5
 
double_t fdMaxPublishTime = 5.0
 
std::vector< std::string > fsAllowedChannels = {fsChannelNameDataInput}
 List of MQ channels names.
 
uint64_t fulNumMessages = 0
 Parameters management.
 
uint64_t fulTsCounter = 0
 
std::chrono::system_clock::time_point fLastPublishTime = std::chrono::system_clock::now()
 
CbmMcbm2019TimeWinEventBuilderAlgofpAlgo = nullptr
 Processing algos.
 
size_t fuNbCoreMsPerTs = 0
 TS MetaData stable values storage.
 
size_t fuNbOverMsPerTs = 0
 
Double_t fdMsSizeInNs = 1280000
 
Double_t fdTsCoreSizeInNs = -1.0
 Size of a single MS, [nanoseconds].
 
Double_t fdTsOverSizeInNs = -1.0
 Total size of the core MS in a TS, [nanoseconds].
 
Double_t fdTsFullSizeInNs = -1.0
 Total size of the overlap MS in a TS, [nanoseconds].
 
TClonesArray * fTimeSliceMetaDataArray = nullptr
 Total size of all MS in a TS, [nanoseconds].
 
TimesliceMetaDatafTsMetaData = nullptr
 
std::vector< CbmTofDigi > * fvDigiBmon = nullptr
 Digis storage.
 
std::vector< CbmStsDigi > * fvDigiSts = nullptr
 
std::vector< CbmMuchBeamTimeDigi > * fvDigiMuch = nullptr
 
std::vector< CbmTrdDigi > * fvDigiTrd = nullptr
 
std::vector< CbmTofDigi > * fvDigiTof = nullptr
 
std::vector< CbmRichDigi > * fvDigiRich = nullptr
 
std::vector< CbmPsdDigi > * fvDigiPsd = nullptr
 
TClonesArray * fEvents = nullptr
 Data emission.
 
FairRunOnline * fpRun = nullptr
 output container of CbmEvents
 
TObjArray fArrayHisto = {}
 Array of histograms to send to the histogram server.
 
std::vector< std::pair< std::string, std::string > > fvpsHistosFolder = {}
 Vector of string pairs with ( HistoName, FolderPath ) to send to the histogram server.
 
std::vector< std::pair< std::string, std::string > > fvpsCanvasConfig = {}
 

Detailed Description

Definition at line 42 of file CbmDeviceMcbmEventBuilderWin.h.

Constructor & Destructor Documentation

◆ CbmDeviceMcbmEventBuilderWin()

CbmDeviceMcbmEventBuilderWin::CbmDeviceMcbmEventBuilderWin ( )

Definition at line 57 of file CbmDeviceMcbmEventBuilderWin.cxx.

References fpAlgo.

◆ ~CbmDeviceMcbmEventBuilderWin()

CbmDeviceMcbmEventBuilderWin::~CbmDeviceMcbmEventBuilderWin ( )
virtual

Clear metadata

Clear vectors

Clear events TClonesArray

Definition at line 656 of file CbmDeviceMcbmEventBuilderWin.cxx.

References fEvents, fpAlgo, fpRun, fTimeSliceMetaDataArray, fTsMetaData, fvDigiBmon, fvDigiMuch, fvDigiPsd, fvDigiRich, fvDigiSts, fvDigiTof, and fvDigiTrd.

Member Function Documentation

◆ Finish()

void CbmDeviceMcbmEventBuilderWin::Finish ( )
private

Definition at line 682 of file CbmDeviceMcbmEventBuilderWin.cxx.

◆ HandleCommand()

bool CbmDeviceMcbmEventBuilderWin::HandleCommand ( FairMQMessagePtr & ,
int  )
protected

◆ HandleData()

bool CbmDeviceMcbmEventBuilderWin::HandleData ( FairMQParts & parts,
int  )
protected

Extract unpacked data from input message

TS metadata TODO: code order of vectors in the TS MetaData!!

FIXME: Not if this is the proper way to insert the data

BMON

STS

MUCH

TRD

TOF

RICH

PSD

Call Algo ProcessTs method

Send events vector to ouput

Clear metadata

Clear vectors

Clear event vector after usage

Histograms management

Send histograms each 100 time slices. Should be each ~1s Use also runtime checker to trigger sending after M s if processing too slow or delay sending if processing too fast

Definition at line 467 of file CbmDeviceMcbmEventBuilderWin.cxx.

References CbmMcbm2019TimeWinEventBuilderAlgo::ClearEventVector(), fbFillHistos, fdMaxPublishTime, fdMinPublishTime, fEvents, fLastPublishTime, fpAlgo, fTimeSliceMetaDataArray, fTsMetaData, fulNumMessages, fuPublishFreqTs, fvDigiBmon, fvDigiMuch, fvDigiPsd, fvDigiRich, fvDigiSts, fvDigiTof, fvDigiTrd, CbmMcbm2019TimeWinEventBuilderAlgo::ProcessTs(), SendEvents(), and SendHistograms().

Referenced by InitTask().

◆ InitTask()

void CbmDeviceMcbmEventBuilderWin::InitTask ( )
protectedvirtual

Read options from executable

FIXME: Disable clang formatting for now as it corrupts all alignment

Initialize the Algorithm parameters

Extract Event Overlap Mode

Extract refdet

Extract detector to add if any

Extract detector to remove if any

Extract Trigger window to add if any

Detector Enum Tag

Window beginning

Window end

Extract MinNb for trigger if any

Detector Enum Tag

Min number

FIXME: Re-enable clang formatting after formatted lines

Create input vectors

Register all input data members with the FairRoot manager

Digis storage

Feint to avoid crash of DigiManager due to missing source pointer validity check in FairRootManager.h at line 461

Create output TClonesArray TODO: remove TObject from CbmEvent and switch to vectors!

Now that everything is set, initialize the Algorithm

Histograms management

Obtain vector of pointers on each histo from the algo (+ optionally desired folder)

Obtain vector of pointers on each canvas from the algo (+ optionally desired folder)

Add pointers to each histo in the histo array Create histo config vector ===> Use an std::vector< std::pair< std::string, std::string > > with < Histo name, Folder > and send it through a separate channel using the BoostSerializer

Serialize the vector of histo config into a single MQ message

Send message to the common histogram config messages queue

Create canvas config vector ===> Use an std::vector< std::pair< std::string, std::string > > with < Canvas name, config > and send it through a separate channel using the BoostSerializer

Serialize the vector of canvas config into a single MQ message

Send message to the common canvas config messages queue

Definition at line 59 of file CbmDeviceMcbmEventBuilderWin.cxx.

References CbmMcbm2019TimeWinEventBuilderAlgo::AddDetector(), AllowOverlap, fArrayHisto, fbFillHistos, fbIgnoreTsOverlap, fdMaxPublishTime, fdMinPublishTime, fEvents, first, fpAlgo, fpRun, fsAllowedChannels, fsChannelNameCanvasConfig, fsChannelNameDataInput, fsChannelNameDataOutput, fsChannelNameHistosConfig, fsChannelNameHistosInput, fsEvtOverMode, fsRefDet, fTimeSliceMetaDataArray, fuPublishFreqTs, fvDigiBmon, fvDigiMuch, fvDigiPsd, fvDigiRich, fvDigiSts, fvDigiTof, fvDigiTrd, fvpsCanvasConfig, fvpsHistosFolder, fvsAddDet, fvsDelDet, fvsSetTrigMinNb, fvsSetTrigWin, GenerateCanvasConfigString(), CbmMcbm2019TimeWinEventBuilderAlgo::GetCanvasVector(), CbmMcbm2019TimeWinEventBuilderAlgo::GetHistoVector(), HandleData(), CbmMcbm2019TimeWinEventBuilderAlgo::InitAlgo(), IsChannelNameAllowed(), kBmon, kEventBuilderDetBmon, kEventBuilderDetMuch, kEventBuilderDetPsd, kEventBuilderDetRich, kEventBuilderDetSts, kEventBuilderDetTof, kEventBuilderDetTrd, kEventBuilderDetUndef, kMuch, kNotExist, kPsd, kRich, kSts, kTof, kTrd, MergeOverlap, NoOverlap, CbmMcbm2019TimeWinEventBuilderAlgo::RemoveDetector(), CbmMcbm2019TimeWinEventBuilderAlgo::SetEventOverlapMode(), CbmMcbm2019TimeWinEventBuilderAlgo::SetFillHistos(), CbmMcbm2019TimeWinEventBuilderAlgo::SetIgnoreTsOverlap(), CbmMcbm2019TimeWinEventBuilderAlgo::SetReferenceDetector(), CbmMcbm2019TimeWinEventBuilderAlgo::SetTriggerMinNumber(), and CbmMcbm2019TimeWinEventBuilderAlgo::SetTriggerWindow().

◆ IsChannelNameAllowed()

bool CbmDeviceMcbmEventBuilderWin::IsChannelNameAllowed ( std::string channelName)
private

Definition at line 387 of file CbmDeviceMcbmEventBuilderWin.cxx.

References fsAllowedChannels, and pos.

Referenced by InitTask().

◆ SendEvents()

bool CbmDeviceMcbmEventBuilderWin::SendEvents ( FairMQParts & partsIn)
private

Clear events TClonesArray before usage.

Get vector reference from algo

Move CbmEvent from temporary vector to TClonesArray

Serialize the array of events into a single MQ message

Add it at the end of the input composed message FIXME: use move or fix addition of new part to avoid full message copy

Send message

Definition at line 585 of file CbmDeviceMcbmEventBuilderWin.cxx.

References fEvents, fpAlgo, fsChannelNameDataOutput, CbmMcbm2019TimeWinEventBuilderAlgo::GetEventVector(), and CbmEvent::ToString().

Referenced by HandleData().

◆ SendHistograms()

bool CbmDeviceMcbmEventBuilderWin::SendHistograms ( )
private

Serialize the array of histos into a single MQ message

Send message to the common histogram messages queue

Reset the histograms after sending them (but do not reset the time)

Definition at line 637 of file CbmDeviceMcbmEventBuilderWin.cxx.

References fArrayHisto, fpAlgo, fsChannelNameHistosInput, and CbmMcbm2019TimeWinEventBuilderAlgo::ResetHistograms().

Referenced by HandleData().

Member Data Documentation

◆ fArrayHisto

TObjArray CbmDeviceMcbmEventBuilderWin::fArrayHisto = {}
private

Array of histograms to send to the histogram server.

Definition at line 122 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask(), and SendHistograms().

◆ fbFillHistos

Bool_t CbmDeviceMcbmEventBuilderWin::fbFillHistos = kTRUE
private

Ignore data in Overlap part of the TS.

Definition at line 57 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by HandleData(), and InitTask().

◆ fbIgnoreTsOverlap

Bool_t CbmDeviceMcbmEventBuilderWin::fbIgnoreTsOverlap = kFALSE
private

Constants.

Control flags

Definition at line 56 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask().

◆ fdMaxPublishTime

double_t CbmDeviceMcbmEventBuilderWin::fdMaxPublishTime = 5.0
private

Definition at line 77 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by HandleData(), and InitTask().

◆ fdMinPublishTime

double_t CbmDeviceMcbmEventBuilderWin::fdMinPublishTime = 0.5
private

Definition at line 76 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by HandleData(), and InitTask().

◆ fdMsSizeInNs

Double_t CbmDeviceMcbmEventBuilderWin::fdMsSizeInNs = 1280000
private

Definition at line 97 of file CbmDeviceMcbmEventBuilderWin.h.

◆ fdTsCoreSizeInNs

Double_t CbmDeviceMcbmEventBuilderWin::fdTsCoreSizeInNs = -1.0
private

Size of a single MS, [nanoseconds].

Definition at line 98 of file CbmDeviceMcbmEventBuilderWin.h.

◆ fdTsFullSizeInNs

Double_t CbmDeviceMcbmEventBuilderWin::fdTsFullSizeInNs = -1.0
private

Total size of the overlap MS in a TS, [nanoseconds].

Definition at line 100 of file CbmDeviceMcbmEventBuilderWin.h.

◆ fdTsOverSizeInNs

Double_t CbmDeviceMcbmEventBuilderWin::fdTsOverSizeInNs = -1.0
private

Total size of the core MS in a TS, [nanoseconds].

Definition at line 99 of file CbmDeviceMcbmEventBuilderWin.h.

◆ fEvents

TClonesArray* CbmDeviceMcbmEventBuilderWin::fEvents = nullptr
private

Data emission.

Definition at line 115 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by HandleData(), InitTask(), SendEvents(), and ~CbmDeviceMcbmEventBuilderWin().

◆ fLastPublishTime

std::chrono::system_clock::time_point CbmDeviceMcbmEventBuilderWin::fLastPublishTime = std::chrono::system_clock::now()
private

Definition at line 89 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by HandleData().

◆ fpAlgo

CbmMcbm2019TimeWinEventBuilderAlgo* CbmDeviceMcbmEventBuilderWin::fpAlgo = nullptr
private

◆ fpRun

FairRunOnline* CbmDeviceMcbmEventBuilderWin::fpRun = nullptr
private

output container of CbmEvents

Internal data registration (for FairRootManager -> DigiManager links)

Definition at line 119 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask(), and ~CbmDeviceMcbmEventBuilderWin().

◆ fsAllowedChannels

std::vector<std::string> CbmDeviceMcbmEventBuilderWin::fsAllowedChannels = {fsChannelNameDataInput}
private

List of MQ channels names.

Definition at line 80 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask(), and IsChannelNameAllowed().

◆ fsChannelNameCanvasConfig

std::string CbmDeviceMcbmEventBuilderWin::fsChannelNameCanvasConfig = "canvas-conf"
private

Definition at line 73 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask().

◆ fsChannelNameCommands

std::string CbmDeviceMcbmEventBuilderWin::fsChannelNameCommands = "commands"
private

Definition at line 70 of file CbmDeviceMcbmEventBuilderWin.h.

◆ fsChannelNameDataInput

std::string CbmDeviceMcbmEventBuilderWin::fsChannelNameDataInput = "unpts_0"
private

message queues

Definition at line 68 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask().

◆ fsChannelNameDataOutput

std::string CbmDeviceMcbmEventBuilderWin::fsChannelNameDataOutput = "events"
private

Definition at line 69 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask(), and SendEvents().

◆ fsChannelNameHistosConfig

std::string CbmDeviceMcbmEventBuilderWin::fsChannelNameHistosConfig = "histo-conf"
private

Definition at line 72 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask().

◆ fsChannelNameHistosInput

std::string CbmDeviceMcbmEventBuilderWin::fsChannelNameHistosInput = "histogram-in"
private

Definition at line 71 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask(), and SendHistograms().

◆ fsEvtOverMode

std::string CbmDeviceMcbmEventBuilderWin::fsEvtOverMode = "NoOverlap"
private

Switch ON/OFF filling of histograms.

User settings parameters Algo enum settings

Definition at line 61 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask().

◆ fsRefDet

std::string CbmDeviceMcbmEventBuilderWin::fsRefDet = "kBmon"
private

Definition at line 62 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask().

◆ fTimeSliceMetaDataArray

TClonesArray* CbmDeviceMcbmEventBuilderWin::fTimeSliceMetaDataArray = nullptr
private

Total size of all MS in a TS, [nanoseconds].

Data reception TS MetaData storage

Definition at line 104 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by HandleData(), InitTask(), and ~CbmDeviceMcbmEventBuilderWin().

◆ fTsMetaData

TimesliceMetaData* CbmDeviceMcbmEventBuilderWin::fTsMetaData = nullptr
private

Definition at line 105 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by HandleData(), and ~CbmDeviceMcbmEventBuilderWin().

◆ fulNumMessages

uint64_t CbmDeviceMcbmEventBuilderWin::fulNumMessages = 0
private

Parameters management.

Statistics & first TS rejection

Definition at line 87 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by HandleData().

◆ fulTsCounter

uint64_t CbmDeviceMcbmEventBuilderWin::fulTsCounter = 0
private

Definition at line 88 of file CbmDeviceMcbmEventBuilderWin.h.

◆ fuNbCoreMsPerTs

size_t CbmDeviceMcbmEventBuilderWin::fuNbCoreMsPerTs = 0
private

TS MetaData stable values storage.

Definition at line 95 of file CbmDeviceMcbmEventBuilderWin.h.

◆ fuNbOverMsPerTs

size_t CbmDeviceMcbmEventBuilderWin::fuNbOverMsPerTs = 0
private

Definition at line 96 of file CbmDeviceMcbmEventBuilderWin.h.

◆ fuPublishFreqTs

uint32_t CbmDeviceMcbmEventBuilderWin::fuPublishFreqTs = 100
private

Histograms management.

Definition at line 75 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by HandleData(), and InitTask().

◆ fvDigiBmon

std::vector<CbmTofDigi>* CbmDeviceMcbmEventBuilderWin::fvDigiBmon = nullptr
private

Digis storage.

Definition at line 107 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by HandleData(), InitTask(), and ~CbmDeviceMcbmEventBuilderWin().

◆ fvDigiMuch

std::vector<CbmMuchBeamTimeDigi>* CbmDeviceMcbmEventBuilderWin::fvDigiMuch = nullptr
private

◆ fvDigiPsd

std::vector<CbmPsdDigi>* CbmDeviceMcbmEventBuilderWin::fvDigiPsd = nullptr
private

◆ fvDigiRich

std::vector<CbmRichDigi>* CbmDeviceMcbmEventBuilderWin::fvDigiRich = nullptr
private

◆ fvDigiSts

std::vector<CbmStsDigi>* CbmDeviceMcbmEventBuilderWin::fvDigiSts = nullptr
private

◆ fvDigiTof

std::vector<CbmTofDigi>* CbmDeviceMcbmEventBuilderWin::fvDigiTof = nullptr
private

◆ fvDigiTrd

std::vector<CbmTrdDigi>* CbmDeviceMcbmEventBuilderWin::fvDigiTrd = nullptr
private

◆ fvpsCanvasConfig

std::vector<std::pair<std::string, std::string> > CbmDeviceMcbmEventBuilderWin::fvpsCanvasConfig = {}
private

Vector of string pairs with ( CanvasName, CanvasConfig ) to send to the histogram server Format of Can config is "NbPadX(U);NbPadY(U);ConfigPad1(s);....;ConfigPadXY(s)" Format of Pad config is "GrixX(b),GridY(b),LogX(b),LogY(b),LogZ(b),HistoName(s),DrawOptions(s)"

Definition at line 128 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask().

◆ fvpsHistosFolder

std::vector<std::pair<std::string, std::string> > CbmDeviceMcbmEventBuilderWin::fvpsHistosFolder = {}
private

Vector of string pairs with ( HistoName, FolderPath ) to send to the histogram server.

Definition at line 124 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask().

◆ fvsAddDet

std::vector<std::string> CbmDeviceMcbmEventBuilderWin::fvsAddDet = {}
private

Definition at line 63 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask().

◆ fvsDelDet

std::vector<std::string> CbmDeviceMcbmEventBuilderWin::fvsDelDet = {}
private

Definition at line 64 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask().

◆ fvsSetTrigMinNb

std::vector<std::string> CbmDeviceMcbmEventBuilderWin::fvsSetTrigMinNb = {}
private

Definition at line 66 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask().

◆ fvsSetTrigWin

std::vector<std::string> CbmDeviceMcbmEventBuilderWin::fvsSetTrigWin = {}
private

Definition at line 65 of file CbmDeviceMcbmEventBuilderWin.h.

Referenced by InitTask().


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