From 0157edc91d159fa0fab962bb5b32f05f77987f74 Mon Sep 17 00:00:00 2001 From: Dominik Smith <smith@th.physik.uni-frankfurt.de> Date: Wed, 28 Jul 2021 12:19:32 +0200 Subject: [PATCH] CbmStsUnpackAlgo: Added DPB offset to FEB index calculation in processHitInfo(). --- reco/detectors/sts/unpack/CbmStsUnpackAlgo.cxx | 11 +++++++++-- reco/detectors/sts/unpack/CbmStsUnpackAlgo.h | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/reco/detectors/sts/unpack/CbmStsUnpackAlgo.cxx b/reco/detectors/sts/unpack/CbmStsUnpackAlgo.cxx index 254f7f5404..8bc5076f92 100644 --- a/reco/detectors/sts/unpack/CbmStsUnpackAlgo.cxx +++ b/reco/detectors/sts/unpack/CbmStsUnpackAlgo.cxx @@ -146,6 +146,9 @@ Bool_t CbmStsUnpackAlgo::initParSet(CbmMcbm2018StsPar* parset) // Get Number of Channels per FEB fNrChsPerFeb = parset->GetNbChanPerFeb(); + // Get Number of FEBs per CROB + fNrFebsPerCrob = parset->GetNbFebsPerCrob(); + for (size_t ielink = 0; ielink < fNrElinksPerCrob; ++ielink) { fElinkIdxToFebIdxVec.emplace_back(parset->ElinkIdxToFebIdx(ielink)); fElinkIdxToAsicIdxVec.emplace_back( @@ -451,13 +454,16 @@ void CbmStsUnpackAlgo::processHitInfo(const stsxyter::Message& mess) { const uint16_t usElinkIdx = mess.GetLinkIndexHitBinning(); const uint32_t uCrobIdx = usElinkIdx / fNrElinksPerCrob; - const int32_t uFebIdx = fElinkIdxToFebIdxVec.at(usElinkIdx); + int32_t uFebIdx = fElinkIdxToFebIdxVec.at(usElinkIdx); if (-1 == uFebIdx) { LOG(warning) << "CbmAlgoUnpackSts::DoUnpack => " << "Wrong elink Idx! Elink raw " << Form("%d remap %d", usElinkIdx, uFebIdx); return; } - // Get the asix index + //uFebIdx += ( fuCurrDpbIdx * fNrCrobPerDpb + ____CrobIndexCalculationIfNeeded___() ) * fuNbFebsPerCrob; + uFebIdx += (fuCurrDpbIdx * fNrCrobPerDpb) * fNrFebsPerCrob; //no Crob index calculation for now + + // Get the asic index uint32_t uAsicIdx = getAsicIndex(fuCurrDpbIdx, uCrobIdx, usElinkIdx); const uint16_t usChan = mess.GetHitChannel(); @@ -478,6 +484,7 @@ void CbmStsUnpackAlgo::processHitInfo(const stsxyter::Message& mess) fvvusLastTsMsbChan[uAsicIdx][usChan] = fvulCurrentTsMsb[fuCurrDpbIdx]; fvvusLastTsMsbCycleChan[uAsicIdx][usChan] = fvuCurrentTsMsbCycle[fuCurrDpbIdx]; + // Compute the Full time stamp const int64_t ulHitTime = getFullTimeStamp(usRawTs); diff --git a/reco/detectors/sts/unpack/CbmStsUnpackAlgo.h b/reco/detectors/sts/unpack/CbmStsUnpackAlgo.h index 079a36be8c..502e9b4c27 100644 --- a/reco/detectors/sts/unpack/CbmStsUnpackAlgo.h +++ b/reco/detectors/sts/unpack/CbmStsUnpackAlgo.h @@ -246,6 +246,9 @@ protected: /** @brief Number of CROBs per DPB */ uint32_t fNrCrobPerDpb = 0; //! + /** @brief Number of FEBs per CROB */ + uint32_t fNrFebsPerCrob = 0; //! + /** @brief Vector used for the translation between eLink index and FEB index*/ std::vector<int> fElinkIdxToFebIdxVec = {}; -- GitLab