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

#include <CbmMuchUnpackAlgo.h>

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

Public Member Functions

 CbmMuchUnpackAlgo ()
 Create the Cbm Much Unpack Algo object.
 
 CbmMuchUnpackAlgo (std::string name)
 Create the Cbm Much Unpack Algo object.
 
virtual ~CbmMuchUnpackAlgo ()
 Destroy the Cbm Much Unpack Algo object.
 
 CbmMuchUnpackAlgo (const CbmMuchUnpackAlgo &)=delete
 Copy constructor - not implemented.
 
CbmMuchUnpackAlgooperator= (const CbmMuchUnpackAlgo &)=delete
 Assignment operator - not implemented.
 
void SetMinAdcCut (uint32_t value)
 Set the minimum adc cut value.
 
void SetMinAdcCut (uint32_t febid, uint32_t value)
 
void SetAsicTimeOffsetVec (std::vector< double > value)
 Set the time offset per Asic.
 
void SetDuplicatesRejection (bool bIn=true, bool bDiffAdc=true)
 Enable/Disable the duplicate digis rejection, without or with same ADC checks.
 
virtual std::vector< std::pair< std::string, std::shared_ptr< FairParGenericSet > > > * GetParContainerRequest (std::string geoTag, std::uint32_t runId)
 Get the requested parameter containers. To be defined in the derived classes! Return the required parameter containers together with the paths to the ascii files to.
 
void MaskNoisyChannel (const uint32_t uFeb, const uint32_t uChan, const bool bMasked=true)
 Mask a Noisy Channel.
 
void SetMonitor (std::shared_ptr< CbmMuchUnpackMonitor > monitor)
 Set a predefined monitor.
 
void SetParFileName (std::string sNewName)
 Sets the name of the parameter file to be used.
 
void SetInactiveChannel (uint32_t channel)
 

Protected Member Functions

uint32_t getFebIndex (uint32_t dpbidx, uint32_t crobidx, uint16_t elinkidx)
 Get the Asic Index.
 
virtual void finish ()
 Finish function for this algorithm base clase.
 
uint64_t getFullTimeStamp (const uint16_t usRawTs)
 Get the Full Time Stamp from raw time stamp.
 
Bool_t init ()
 Intialisation at begin of run. Special inits of the derived algos.
 
void initDpbIdIndexMap (CbmMuchUnpackPar *parset)
 Initialize the DpbIdIndexMap with the information from the parset.
 
void initInternalStatus (CbmMuchUnpackPar *parset)
 experts please add description here
 
Bool_t initParSet (FairParGenericSet *parset)
 Handles the distribution of the hidden derived classes to their explicit functions.
 
Bool_t initParSet (CbmMuchUnpackPar *parset)
 Initialize the parameters from CbmMuchUnpackPar.
 
void loopMsMessages (const uint8_t *msContent, const uint32_t uSize, const size_t uMsIdx)
 Initialize and transfer the informations to the parameters storage vectors.
 
void printActiveCrobs (CbmMuchUnpackPar *parset, const std::vector< std::vector< bool > > &vbCrobActiveFlag)
 experts please add description
 
void printAddressMaps (CbmMuchUnpackPar *parset, const std::vector< std::vector< std::vector< int32_t > > > &, const std::vector< std::vector< std::vector< int32_t > > > &)
 experts please add description
 
void processEpochInfo (const stsxyter::Message &)
 experts please add description marked as not used currently
 
void processErrorInfo (const stsxyter::Message &mess)
 experts please add description
 
void processHitInfo (const stsxyter::Message &mess)
 Process the information of the hit message and create a MuchDigi from it.
 
void processStatusInfo (const stsxyter::Message &mess, uint32_t uIdx)
 experts please add description
 
void processTsMsbInfo (const stsxyter::Message &mess, uint32_t uMessIdx, uint32_t uMsIdx)
 experts please add description
 
void refreshTsMsbFields (const uint32_t imslice, const size_t mstime)
 experts please add description here
 
uint32_t CreateMuchAddress (uint32_t dpbidx, int32_t febId, uint32_t usChan)
 
bool setDerivedTsParameters (size_t)
 Set the Derived Ts Parameters.
 
bool unpack (const fles::Timeslice *ts, std::uint16_t icomp, UInt_t imslice)
 Unpack a given microslice. To be implemented in the derived unpacker algos.
 

Protected Attributes

uint32_t fdAdcCut = 0
 Minimum adc cut to store a hit.
 
std::map< uint32_t, uint32_t > fdAdcCut_perFeb
 Minimum adc cut per Feb to store a hit.
 
std::vector< double > fvdTimeOffsetNsAsics = {}
 Time offsets per Asic???
 
bool fbRejectDuplicateDigis = false
 Enables the rejection of duplicate digis.
 
bool fbDupliWithoutAdc = true
 If rejecting duplicate digis, enables rejection even if ADC differs.
 
bool fbUseChannelMask = false
 flag if channel mask is to be used or not. Set automatically via MaskNoisyChannels
 
std::vector< std::vector< bool > > fvvbMaskedChannels = {}
 Vector of channel masks, [ NbFeb ][ NbCHanInFeb ], used only if fbUseChannelMask is true.
 
std::map< uint32_t, uint32_t > fDpbIdIndexMap = {}
 Map of DPB Identifier to DPB index.
 
uint32_t fuCurrDpbIdx = 0
 Current dpb id.
 
std::vector< bool > fvbMaskedComponents
 Masked components to print out missing component only once.
 
uint32_t fuNbFebs = 0
 Number of FEBs with StsXyter ASICs.
 
std::vector< uint32_t > fvbFebAdcCut = {}
 ADC cuts for FEBs.
 
uint32_t fNrElinksPerCrob = 0
 Number of eLinks per CROB.
 
uint32_t fNrAsicsPerCrob = 0
 Number of ASICs per CROB.
 
uint32_t fNrAsicsPerFeb = 0
 Number of ASICs per FEB.
 
uint32_t fNrChsPerAsic = 0
 Number of Channels per Asic.
 
uint32_t fNrChsPerFeb = 0
 Number of Channels per FEB.
 
uint32_t fNrCrobPerDpb = 0
 Number of CROBs per DPB.
 
uint32_t fNrFebsPerCrob = 0
 Number of FEBs per CROB.
 
std::vector< int > fElinkIdxToFebIdxVec = {}
 Vector used for the translation between eLink index and FEB index.
 
std::vector< std::pair< uint32_t, uint32_t > > fElinkIdxToAsicIdxVec = {}
 Vector used for the translation between eLink index and Asic index first is feb type A second is feb type b.
 
std::vector< std::vector< std::vector< int32_t > > > fviFebType = {}
 FEB type, [ NbDpb ][ NbCrobPerDpb ][ NbFebsPerCrob ], 0 = A, 1 = B, -1 if inactive.
 
std::vector< bool > fvbFebPulser
 Pulser flag for each FEB, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].
 
std::vector< int32_t > fviFebAddress
 STS address for each FEB, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].
 
std::vector< int32_t > fviFebSide
 Module side for each FEB, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].
 
std::vector< double > fvdFebAdcGain
 ADC gain in e-/b, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].
 
std::vector< double > fvdFebAdcOffs
 ADC offset in e-, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].
 
std::vector< uint64_t > fvulCurrentTsMsb = {}
 Current TS MSB for each DPB.
 
std::vector< uint32_t > fvuCurrentTsMsbCycle = {}
 Current TS MSB cycle for DPB.
 
uint64_t fulTsStartInTsMsb = 0
 Start time of the TS expressed in TS_MSB instead of ns.
 
std::vector< uint64_t > fulTsMsbIndexInTs = {}
 Current TS MSB cycle for DPB relative to TS start.
 
std::vector< std::vector< uint16_t > > fvvusLastTsChan = {}
 TS of last hit message for each channel, [ AsicIdx ][ Chan ].
 
std::vector< std::vector< uint16_t > > fvvusLastAdcChan = {}
 ADC of last hit message for each channel, [ AsicIdx ][ Chan ].
 
std::vector< std::vector< uint64_t > > fvvulLastTsMsbChan = {}
 TS MSB in TS of last hit message for each channel, [ AsicIdx ][ Chan ].
 
std::shared_ptr< CbmMuchUnpackMonitorfMonitor = nullptr
 Potential (online) monitor for the unpacking process.
 
uint64_t fMsStartTime = 0
 Current µSlice time.
 
std::set< uint32_t > fInactiveChannels = {}
 
uint64_t fMaskedNoisyHitsFromCbmMuchAddress = 0
 

Static Protected Attributes

static const uint32_t kuMaxTsMsbDiffDuplicates = 8
 Duplicate hits suppression.
 

Private Attributes

CbmMuchUnpackParfUnpackPar = nullptr
 
uint64_t fuSkippMessNoValidAddress = 0
 For static/inline mapping functions.
 
uint64_t fuSkippMessNoValidFebPosition = 0
 
uint64_t fuSkippMessNoValidElink = 0
 
std::string fParFileName = "mMuchPar.par"
 Settings from parameter file.
 

Detailed Description

Definition at line 39 of file CbmMuchUnpackAlgo.h.

Constructor & Destructor Documentation

◆ CbmMuchUnpackAlgo() [1/3]

CbmMuchUnpackAlgo::CbmMuchUnpackAlgo ( )

Create the Cbm Much Unpack Algo object.

Definition at line 20 of file CbmMuchUnpackAlgo.cxx.

◆ CbmMuchUnpackAlgo() [2/3]

CbmMuchUnpackAlgo::CbmMuchUnpackAlgo ( std::string name)

Create the Cbm Much Unpack Algo object.

Definition at line 22 of file CbmMuchUnpackAlgo.cxx.

◆ ~CbmMuchUnpackAlgo()

CbmMuchUnpackAlgo::~CbmMuchUnpackAlgo ( )
virtual

Destroy the Cbm Much Unpack Algo object.

Definition at line 24 of file CbmMuchUnpackAlgo.cxx.

◆ CbmMuchUnpackAlgo() [3/3]

CbmMuchUnpackAlgo::CbmMuchUnpackAlgo ( const CbmMuchUnpackAlgo & )
delete

Copy constructor - not implemented.

Member Function Documentation

◆ CreateMuchAddress()

uint32_t CbmMuchUnpackAlgo::CreateMuchAddress ( uint32_t dpbidx,
int32_t febId,
uint32_t usChan )
protected

Below FebID is according to FEB Position in Module GEM A or Module GEM B (Carefully write MUCH Par file)

Switch to smx2.0/smx2.1 data-> fiFlag = 0 for 2.0 and fiFlag = 1 for 2.1

Definition at line 618 of file CbmMuchUnpackAlgo.cxx.

References fUnpackPar, CbmMuchAddress::GetAddress(), CbmMuchUnpackPar::GetPadXA(), CbmMuchUnpackPar::GetPadXB(), CbmMuchUnpackPar::GetPadXRpc(), CbmMuchUnpackPar::GetPadYA(), CbmMuchUnpackPar::GetPadYB(), CbmMuchUnpackPar::GetPadYRpc(), and CbmMuchAddress::SetElementId().

Referenced by processHitInfo().

◆ finish()

virtual void CbmMuchUnpackAlgo::finish ( )
inlineprotectedvirtual

Finish function for this algorithm base clase.

Definition at line 116 of file CbmMuchUnpackAlgo.h.

References fMonitor, fuSkippMessNoValidAddress, fuSkippMessNoValidElink, and fuSkippMessNoValidFebPosition.

◆ getFebIndex()

uint32_t CbmMuchUnpackAlgo::getFebIndex ( uint32_t dpbidx,
uint32_t crobidx,
uint16_t elinkidx )
protected

Get the Asic Index.

Parameters
dpbidx
crobidx
elinkidx

◆ getFullTimeStamp()

uint64_t CbmMuchUnpackAlgo::getFullTimeStamp ( const uint16_t usRawTs)
protected

Get the Full Time Stamp from raw time stamp.

Parameters
usRawTs
Returns
uint64_t

Definition at line 54 of file CbmMuchUnpackAlgo.cxx.

References fuCurrDpbIdx, fulTsMsbIndexInTs, and stsxyter::kuHitNbTsBinsBinning.

Referenced by processHitInfo(), and processStatusInfo().

◆ GetParContainerRequest()

std::vector< std::pair< std::string, std::shared_ptr< FairParGenericSet > > > * CbmMuchUnpackAlgo::GetParContainerRequest ( std::string geoTag,
std::uint32_t runId )
virtual

Get the requested parameter containers. To be defined in the derived classes! Return the required parameter containers together with the paths to the ascii files to.

Parameters
[in]std::stringgeoTag as used in CbmSetup
[in]std::uint32_trunId for runwise defined parameters
Returns
fParContVec

Definition at line 28 of file CbmMuchUnpackAlgo.cxx.

References fParFileName.

◆ init()

Bool_t CbmMuchUnpackAlgo::init ( )
protected

Intialisation at begin of run. Special inits of the derived algos.

Return values
Bool_tinitOk

Definition at line 68 of file CbmMuchUnpackAlgo.cxx.

References fInactiveChannels.

◆ initDpbIdIndexMap()

void CbmMuchUnpackAlgo::initDpbIdIndexMap ( CbmMuchUnpackPar * parset)
protected

Initialize the DpbIdIndexMap with the information from the parset.

Parameters
[in]parsetparameter set for the Much unpacker

Definition at line 78 of file CbmMuchUnpackAlgo.cxx.

References fDpbIdIndexMap, CbmMuchUnpackPar::GetDpbId(), and CbmMuchUnpackPar::GetNrOfDpbs().

Referenced by initParSet().

◆ initInternalStatus()

void CbmMuchUnpackAlgo::initInternalStatus ( CbmMuchUnpackPar * parset)
protected

◆ initParSet() [1/2]

◆ initParSet() [2/2]

Bool_t CbmMuchUnpackAlgo::initParSet ( FairParGenericSet * parset)
protected

Handles the distribution of the hidden derived classes to their explicit functions.

Parameters
parset
Returns
Bool_t initOk

Definition at line 89 of file CbmMuchUnpackAlgo.cxx.

References initParSet().

Referenced by initParSet().

◆ loopMsMessages()

void CbmMuchUnpackAlgo::loopMsMessages ( const uint8_t * msContent,
const uint32_t uSize,
const size_t uMsIdx )
protected

Initialize and transfer the informations to the parameters storage vectors.

Main loop over the sts xyter messages in the µSlices

Parameters
msContent
uSize
uMsIdx
bError
sMessPatt
vNbMessType

Get message type

Definition at line 307 of file CbmMuchUnpackAlgo.cxx.

References stsxyter::Dummy, stsxyter::Empty, stsxyter::EndOfMs, stsxyter::Epoch, fMonitor, fuCurrDpbIdx, stsxyter::Message::GetMessType(), stsxyter::Hit, stsxyter::Message::PrintMessType(), processEpochInfo(), processErrorInfo(), processHitInfo(), processStatusInfo(), processTsMsbInfo(), stsxyter::Status, and stsxyter::TsMsb.

Referenced by unpack().

◆ MaskNoisyChannel()

void CbmMuchUnpackAlgo::MaskNoisyChannel ( const uint32_t uFeb,
const uint32_t uChan,
const bool bMasked = true )

Mask a Noisy Channel.

Parameters
uFeb
uChan
bMasked

Definition at line 373 of file CbmMuchUnpackAlgo.cxx.

References fbUseChannelMask, fNrChsPerFeb, fuNbFebs, and fvvbMaskedChannels.

◆ operator=()

CbmMuchUnpackAlgo & CbmMuchUnpackAlgo::operator= ( const CbmMuchUnpackAlgo & )
delete

Assignment operator - not implemented.

◆ printActiveCrobs()

void CbmMuchUnpackAlgo::printActiveCrobs ( CbmMuchUnpackPar * parset,
const std::vector< std::vector< bool > > & vbCrobActiveFlag )
protected

experts please add description

Definition at line 392 of file CbmMuchUnpackAlgo.cxx.

References fNrCrobPerDpb, and CbmMuchUnpackPar::GetNrOfDpbs().

Referenced by initParSet().

◆ printAddressMaps()

void CbmMuchUnpackAlgo::printAddressMaps ( CbmMuchUnpackPar * parset,
const std::vector< std::vector< std::vector< int32_t > > > & ,
const std::vector< std::vector< std::vector< int32_t > > > &  )
protected

experts please add description

Definition at line 407 of file CbmMuchUnpackAlgo.cxx.

◆ processEpochInfo()

void CbmMuchUnpackAlgo::processEpochInfo ( const stsxyter::Message & )
inlineprotected

experts please add description marked as not used currently

Definition at line 185 of file CbmMuchUnpackAlgo.h.

Referenced by loopMsMessages().

◆ processErrorInfo()

void CbmMuchUnpackAlgo::processErrorInfo ( const stsxyter::Message & mess)
protected

experts please add description

Definition at line 443 of file CbmMuchUnpackAlgo.cxx.

References fMonitor, fMsStartTime, fuCurrDpbIdx, stsxyter::Message::GetMsErrorType(), stsxyter::Message::IsMsErrorFlagOn(), and kMuch.

Referenced by loopMsMessages().

◆ processHitInfo()

void CbmMuchUnpackAlgo::processHitInfo ( const stsxyter::Message & mess)
protected

Process the information of the hit message and create a MuchDigi from it.

Store hit !!!

Store only if masking is disabled or if channeld is not masked 2D vector is safe as always right size if masking enabled

Duplicate hits rejection

FIXME: add plots to check what is done in this rejection

FIXME: see issue #1549 N side: 0-1023 => 0-1023 P side: 0-1023 => 2047-1024

Prevent Clang from onlining

Catch the pulser digis and either save them to their own output or drop them

If EM flag ON, store a corresponding error message with the next flag after all other possible status flags set

Definition at line 457 of file CbmMuchUnpackAlgo.cxx.

References CreateMuchAddress(), CbmMuchUnpackPar::ElinkIdxToFebIdx(), fbDupliWithoutAdc, fbRejectDuplicateDigis, fbUseChannelMask, fInactiveChannels, fMaskedNoisyHitsFromCbmMuchAddress, fMonitor, fNrAsicsPerFeb, fNrChsPerAsic, fuCurrDpbIdx, fulTsMsbIndexInTs, fUnpackPar, fuSkippMessNoValidAddress, fuSkippMessNoValidElink, fuSkippMessNoValidFebPosition, fvbFebAdcCut, fvdTimeOffsetNsAsics, fvvbMaskedChannels, fvvulLastTsMsbChan, fvvusLastAdcChan, fvvusLastTsChan, CbmMuchUnpackPar::GetFebId(), getFullTimeStamp(), stsxyter::Message::GetHitAdc(), stsxyter::Message::GetHitChannel(), stsxyter::Message::GetHitTimeBinning(), stsxyter::Message::GetLinkIndexHitBinning(), CbmMuchUnpackPar::GetNbFebsPerDpb(), stsxyter::Message::IsHitMissedEvts(), stsxyter::kdClockCycleNs, kMuch, and stsxyter::kusLenStatStatus.

Referenced by loopMsMessages().

◆ processStatusInfo()

void CbmMuchUnpackAlgo::processStatusInfo ( const stsxyter::Message & mess,
uint32_t uIdx )
protected

◆ processTsMsbInfo()

void CbmMuchUnpackAlgo::processTsMsbInfo ( const stsxyter::Message & mess,
uint32_t uMessIdx,
uint32_t uMsIdx )
protected

experts please add description

Case where we reach a normal cycle edge

First TS_MSB in MS may jump if TS dropped by DAQ

Msg 1 and 2 will be same TS_MSB if data in 1st bin

New FW introduced TS_MSB suppression + large TS_MSB => warning only if value not increasing

Values Printout

Definition at line 800 of file CbmMuchUnpackAlgo.cxx.

References fMonitor, fuCurrDpbIdx, fulTsMsbIndexInTs, fulTsStartInTsMsb, fvuCurrentTsMsbCycle, fvulCurrentTsMsb, stsxyter::Message::GetTsMsbValBinning(), stsxyter::kusLenTsMsbValBinning, and stsxyter::kuTsMsbNbTsBinsBinning.

Referenced by loopMsMessages().

◆ refreshTsMsbFields()

void CbmMuchUnpackAlgo::refreshTsMsbFields ( const uint32_t imslice,
const size_t mstime )
protected

experts please add description here

Values Printout

Transition at the edge of two MS, the first TS_MSB message (idx 1) will make the cycle

Definition at line 858 of file CbmMuchUnpackAlgo.cxx.

References fuCurrDpbIdx, fulTsMsbIndexInTs, fulTsStartInTsMsb, fvuCurrentTsMsbCycle, fvulCurrentTsMsb, stsxyter::kdClockCycleNs, stsxyter::kuHitNbTsBinsBinning, stsxyter::kulTsCycleNbBinsBinning, stsxyter::kusLenTsMsbValBinning, and stsxyter::kuTsMsbNbTsBinsBinning.

Referenced by unpack().

◆ SetAsicTimeOffsetVec()

void CbmMuchUnpackAlgo::SetAsicTimeOffsetVec ( std::vector< double > value)
inline

Set the time offset per Asic.

Definition at line 64 of file CbmMuchUnpackAlgo.h.

References fvdTimeOffsetNsAsics.

◆ setDerivedTsParameters()

bool CbmMuchUnpackAlgo::setDerivedTsParameters ( size_t )
inlineprotected

Set the Derived Ts Parameters.

In this function parameters required by the explicit algo connected to the timeslice can be set.

Parameters
itimeslice
Returns
true
false

Definition at line 212 of file CbmMuchUnpackAlgo.h.

◆ SetDuplicatesRejection()

void CbmMuchUnpackAlgo::SetDuplicatesRejection ( bool bIn = true,
bool bDiffAdc = true )
inline

Enable/Disable the duplicate digis rejection, without or with same ADC checks.

Definition at line 67 of file CbmMuchUnpackAlgo.h.

References fbDupliWithoutAdc, and fbRejectDuplicateDigis.

◆ SetInactiveChannel()

void CbmMuchUnpackAlgo::SetInactiveChannel ( uint32_t channel)
inline

Definition at line 104 of file CbmMuchUnpackAlgo.h.

References fInactiveChannels.

◆ SetMinAdcCut() [1/2]

void CbmMuchUnpackAlgo::SetMinAdcCut ( uint32_t febid,
uint32_t value )
inline

Definition at line 61 of file CbmMuchUnpackAlgo.h.

References fdAdcCut_perFeb.

◆ SetMinAdcCut() [2/2]

void CbmMuchUnpackAlgo::SetMinAdcCut ( uint32_t value)
inline

Set the minimum adc cut value.

Parameters
[in]value

Definition at line 59 of file CbmMuchUnpackAlgo.h.

References fdAdcCut.

◆ SetMonitor()

void CbmMuchUnpackAlgo::SetMonitor ( std::shared_ptr< CbmMuchUnpackMonitor > monitor)
inline

Set a predefined monitor.

Parameters
monitorpredefined unpacking monitor

Definition at line 95 of file CbmMuchUnpackAlgo.h.

References fMonitor.

◆ SetParFileName()

void CbmMuchUnpackAlgo::SetParFileName ( std::string sNewName)
inline

Sets the name of the parameter file to be used.

Parameters
[in]std:string,pathshould not be included as set in the Config class

Definition at line 102 of file CbmMuchUnpackAlgo.h.

References fParFileName.

◆ unpack()

bool CbmMuchUnpackAlgo::unpack ( const fles::Timeslice * ts,
std::uint16_t icomp,
UInt_t imslice )
protected

Unpack a given microslice. To be implemented in the derived unpacker algos.

Parameters
tstimeslice pointer
icompindex to the component to be unpacked
imsliceindex of the microslice to be unpacked
Returns
true
false
Remarks
The content of the µslice can only be accessed via the timeslice. Hence, we need to pass the pointer to the full timeslice

If monitoring enable, fill here the "Per Timeslice" histograms with info from the previous TS as only way to detect TS transitions due to the multiple calls in case of multiple components. Time set to tlast MS in previous TS. Last TS will be missed.

Check if this sDPB ID was declared in parameter file and stop there if not

If first TS being analyzed, we are probably detecting STS/MUCH boards with same sysid => Do not report the MS as bad, just ignore it

Extract the time base only on MS 0, assuming that we get all TS of a component in order

Definition at line 915 of file CbmMuchUnpackAlgo.cxx.

References fDpbIdIndexMap, fMaskedNoisyHitsFromCbmMuchAddress, fMonitor, fMsStartTime, fuCurrDpbIdx, fulTsStartInTsMsb, fvbMaskedComponents, stsxyter::kdClockCycleNs, stsxyter::kuHitNbTsBinsBinning, loopMsMessages(), and refreshTsMsbFields().

Member Data Documentation

◆ fbDupliWithoutAdc

bool CbmMuchUnpackAlgo::fbDupliWithoutAdc = true
protected

If rejecting duplicate digis, enables rejection even if ADC differs.

Definition at line 242 of file CbmMuchUnpackAlgo.h.

Referenced by processHitInfo(), and SetDuplicatesRejection().

◆ fbRejectDuplicateDigis

bool CbmMuchUnpackAlgo::fbRejectDuplicateDigis = false
protected

Enables the rejection of duplicate digis.

Definition at line 239 of file CbmMuchUnpackAlgo.h.

Referenced by processHitInfo(), and SetDuplicatesRejection().

◆ fbUseChannelMask

bool CbmMuchUnpackAlgo::fbUseChannelMask = false
protected

flag if channel mask is to be used or not. Set automatically via MaskNoisyChannels

Definition at line 245 of file CbmMuchUnpackAlgo.h.

Referenced by MaskNoisyChannel(), and processHitInfo().

◆ fdAdcCut

uint32_t CbmMuchUnpackAlgo::fdAdcCut = 0
protected

Minimum adc cut to store a hit.

Definition at line 230 of file CbmMuchUnpackAlgo.h.

Referenced by initParSet(), and SetMinAdcCut().

◆ fdAdcCut_perFeb

std::map<uint32_t, uint32_t> CbmMuchUnpackAlgo::fdAdcCut_perFeb
protected

Minimum adc cut per Feb to store a hit.

Definition at line 233 of file CbmMuchUnpackAlgo.h.

Referenced by initParSet(), and SetMinAdcCut().

◆ fDpbIdIndexMap

std::map<uint32_t, uint32_t> CbmMuchUnpackAlgo::fDpbIdIndexMap = {}
protected

Map of DPB Identifier to DPB index.

Definition at line 253 of file CbmMuchUnpackAlgo.h.

Referenced by initDpbIdIndexMap(), and unpack().

◆ fElinkIdxToAsicIdxVec

std::vector<std::pair<uint32_t, uint32_t> > CbmMuchUnpackAlgo::fElinkIdxToAsicIdxVec = {}
protected

Vector used for the translation between eLink index and Asic index first is feb type A second is feb type b.

Definition at line 292 of file CbmMuchUnpackAlgo.h.

◆ fElinkIdxToFebIdxVec

std::vector<int> CbmMuchUnpackAlgo::fElinkIdxToFebIdxVec = {}
protected

Vector used for the translation between eLink index and FEB index.

Definition at line 289 of file CbmMuchUnpackAlgo.h.

Referenced by processStatusInfo().

◆ fInactiveChannels

std::set<uint32_t> CbmMuchUnpackAlgo::fInactiveChannels = {}
protected

Definition at line 335 of file CbmMuchUnpackAlgo.h.

Referenced by init(), processHitInfo(), and SetInactiveChannel().

◆ fMaskedNoisyHitsFromCbmMuchAddress

uint64_t CbmMuchUnpackAlgo::fMaskedNoisyHitsFromCbmMuchAddress = 0
protected

Definition at line 337 of file CbmMuchUnpackAlgo.h.

Referenced by processHitInfo(), and unpack().

◆ fMonitor

std::shared_ptr<CbmMuchUnpackMonitor> CbmMuchUnpackAlgo::fMonitor = nullptr
protected

Potential (online) monitor for the unpacking process.

Definition at line 330 of file CbmMuchUnpackAlgo.h.

Referenced by finish(), initParSet(), loopMsMessages(), processErrorInfo(), processHitInfo(), processStatusInfo(), processTsMsbInfo(), SetMonitor(), and unpack().

◆ fMsStartTime

uint64_t CbmMuchUnpackAlgo::fMsStartTime = 0
protected

Current µSlice time.

Definition at line 333 of file CbmMuchUnpackAlgo.h.

Referenced by processErrorInfo(), and unpack().

◆ fNrAsicsPerCrob

uint32_t CbmMuchUnpackAlgo::fNrAsicsPerCrob = 0
protected

Number of ASICs per CROB.

Definition at line 271 of file CbmMuchUnpackAlgo.h.

Referenced by initParSet().

◆ fNrAsicsPerFeb

uint32_t CbmMuchUnpackAlgo::fNrAsicsPerFeb = 0
protected

Number of ASICs per FEB.

Definition at line 274 of file CbmMuchUnpackAlgo.h.

Referenced by initParSet(), and processHitInfo().

◆ fNrChsPerAsic

uint32_t CbmMuchUnpackAlgo::fNrChsPerAsic = 0
protected

Number of Channels per Asic.

Definition at line 277 of file CbmMuchUnpackAlgo.h.

Referenced by initInternalStatus(), initParSet(), and processHitInfo().

◆ fNrChsPerFeb

uint32_t CbmMuchUnpackAlgo::fNrChsPerFeb = 0
protected

Number of Channels per FEB.

Definition at line 280 of file CbmMuchUnpackAlgo.h.

Referenced by initParSet(), and MaskNoisyChannel().

◆ fNrCrobPerDpb

uint32_t CbmMuchUnpackAlgo::fNrCrobPerDpb = 0
protected

Number of CROBs per DPB.

Definition at line 283 of file CbmMuchUnpackAlgo.h.

Referenced by initParSet(), and printActiveCrobs().

◆ fNrElinksPerCrob

uint32_t CbmMuchUnpackAlgo::fNrElinksPerCrob = 0
protected

Number of eLinks per CROB.

Definition at line 268 of file CbmMuchUnpackAlgo.h.

Referenced by initParSet().

◆ fNrFebsPerCrob

uint32_t CbmMuchUnpackAlgo::fNrFebsPerCrob = 0
protected

Number of FEBs per CROB.

Definition at line 286 of file CbmMuchUnpackAlgo.h.

Referenced by initParSet().

◆ fParFileName

std::string CbmMuchUnpackAlgo::fParFileName = "mMuchPar.par"
private

Settings from parameter file.

Definition at line 345 of file CbmMuchUnpackAlgo.h.

Referenced by GetParContainerRequest(), and SetParFileName().

◆ fuCurrDpbIdx

uint32_t CbmMuchUnpackAlgo::fuCurrDpbIdx = 0
protected

◆ fulTsMsbIndexInTs

std::vector<uint64_t> CbmMuchUnpackAlgo::fulTsMsbIndexInTs = {}
protected

Current TS MSB cycle for DPB relative to TS start.

Definition at line 317 of file CbmMuchUnpackAlgo.h.

Referenced by getFullTimeStamp(), initInternalStatus(), processHitInfo(), processTsMsbInfo(), and refreshTsMsbFields().

◆ fulTsStartInTsMsb

uint64_t CbmMuchUnpackAlgo::fulTsStartInTsMsb = 0
protected

Start time of the TS expressed in TS_MSB instead of ns.

Definition at line 315 of file CbmMuchUnpackAlgo.h.

Referenced by processTsMsbInfo(), refreshTsMsbFields(), and unpack().

◆ fuNbFebs

uint32_t CbmMuchUnpackAlgo::fuNbFebs = 0
protected

Number of FEBs with StsXyter ASICs.

Definition at line 262 of file CbmMuchUnpackAlgo.h.

Referenced by initParSet(), and MaskNoisyChannel().

◆ fUnpackPar

CbmMuchUnpackPar* CbmMuchUnpackAlgo::fUnpackPar = nullptr
private

◆ fuSkippMessNoValidAddress

uint64_t CbmMuchUnpackAlgo::fuSkippMessNoValidAddress = 0
private

For static/inline mapping functions.

Definition at line 341 of file CbmMuchUnpackAlgo.h.

Referenced by finish(), and processHitInfo().

◆ fuSkippMessNoValidElink

uint64_t CbmMuchUnpackAlgo::fuSkippMessNoValidElink = 0
private

Definition at line 343 of file CbmMuchUnpackAlgo.h.

Referenced by finish(), and processHitInfo().

◆ fuSkippMessNoValidFebPosition

uint64_t CbmMuchUnpackAlgo::fuSkippMessNoValidFebPosition = 0
private

Definition at line 342 of file CbmMuchUnpackAlgo.h.

Referenced by finish(), and processHitInfo().

◆ fvbFebAdcCut

std::vector<uint32_t> CbmMuchUnpackAlgo::fvbFebAdcCut = {}
protected

ADC cuts for FEBs.

Definition at line 265 of file CbmMuchUnpackAlgo.h.

Referenced by initParSet(), and processHitInfo().

◆ fvbFebPulser

std::vector<bool> CbmMuchUnpackAlgo::fvbFebPulser
protected

Pulser flag for each FEB, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].

Definition at line 298 of file CbmMuchUnpackAlgo.h.

◆ fvbMaskedComponents

std::vector<bool> CbmMuchUnpackAlgo::fvbMaskedComponents
protected

Masked components to print out missing component only once.

Definition at line 259 of file CbmMuchUnpackAlgo.h.

Referenced by unpack().

◆ fvdFebAdcGain

std::vector<double> CbmMuchUnpackAlgo::fvdFebAdcGain
protected

ADC gain in e-/b, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].

Definition at line 304 of file CbmMuchUnpackAlgo.h.

◆ fvdFebAdcOffs

std::vector<double> CbmMuchUnpackAlgo::fvdFebAdcOffs
protected

ADC offset in e-, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].

Definition at line 306 of file CbmMuchUnpackAlgo.h.

◆ fvdTimeOffsetNsAsics

std::vector<double> CbmMuchUnpackAlgo::fvdTimeOffsetNsAsics = {}
protected

Time offsets per Asic???

Todo
expert confirmation required

Definition at line 236 of file CbmMuchUnpackAlgo.h.

Referenced by initParSet(), processHitInfo(), and SetAsicTimeOffsetVec().

◆ fviFebAddress

std::vector<int32_t> CbmMuchUnpackAlgo::fviFebAddress
protected

STS address for each FEB, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].

Definition at line 300 of file CbmMuchUnpackAlgo.h.

◆ fviFebSide

std::vector<int32_t> CbmMuchUnpackAlgo::fviFebSide
protected

Module side for each FEB, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].

Definition at line 302 of file CbmMuchUnpackAlgo.h.

◆ fviFebType

std::vector<std::vector<std::vector<int32_t> > > CbmMuchUnpackAlgo::fviFebType = {}
protected

FEB type, [ NbDpb ][ NbCrobPerDpb ][ NbFebsPerCrob ], 0 = A, 1 = B, -1 if inactive.

Definition at line 295 of file CbmMuchUnpackAlgo.h.

◆ fvuCurrentTsMsbCycle

std::vector<uint32_t> CbmMuchUnpackAlgo::fvuCurrentTsMsbCycle = {}
protected

Current TS MSB cycle for DPB.

Definition at line 312 of file CbmMuchUnpackAlgo.h.

Referenced by initInternalStatus(), processTsMsbInfo(), and refreshTsMsbFields().

◆ fvulCurrentTsMsb

std::vector<uint64_t> CbmMuchUnpackAlgo::fvulCurrentTsMsb = {}
protected

Current TS MSB for each DPB.

Definition at line 310 of file CbmMuchUnpackAlgo.h.

Referenced by initInternalStatus(), processTsMsbInfo(), and refreshTsMsbFields().

◆ fvvbMaskedChannels

std::vector<std::vector<bool> > CbmMuchUnpackAlgo::fvvbMaskedChannels = {}
protected

Vector of channel masks, [ NbFeb ][ NbCHanInFeb ], used only if fbUseChannelMask is true.

Definition at line 248 of file CbmMuchUnpackAlgo.h.

Referenced by MaskNoisyChannel(), and processHitInfo().

◆ fvvulLastTsMsbChan

std::vector<std::vector<uint64_t> > CbmMuchUnpackAlgo::fvvulLastTsMsbChan = {}
protected

TS MSB in TS of last hit message for each channel, [ AsicIdx ][ Chan ].

Definition at line 326 of file CbmMuchUnpackAlgo.h.

Referenced by initInternalStatus(), and processHitInfo().

◆ fvvusLastAdcChan

std::vector<std::vector<uint16_t> > CbmMuchUnpackAlgo::fvvusLastAdcChan = {}
protected

ADC of last hit message for each channel, [ AsicIdx ][ Chan ].

Definition at line 324 of file CbmMuchUnpackAlgo.h.

Referenced by initInternalStatus(), and processHitInfo().

◆ fvvusLastTsChan

std::vector<std::vector<uint16_t> > CbmMuchUnpackAlgo::fvvusLastTsChan = {}
protected

TS of last hit message for each channel, [ AsicIdx ][ Chan ].

Definition at line 322 of file CbmMuchUnpackAlgo.h.

Referenced by initInternalStatus(), and processHitInfo().

◆ kuMaxTsMsbDiffDuplicates

const uint32_t CbmMuchUnpackAlgo::kuMaxTsMsbDiffDuplicates = 8
staticprotected

Duplicate hits suppression.

Definition at line 320 of file CbmMuchUnpackAlgo.h.


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