From 479518152cb641335706bb5e997dab3e307b7fff Mon Sep 17 00:00:00 2001 From: Nikolay Karpushkin <karpushkin@inr.ru> Date: Tue, 13 Jul 2021 11:14:52 +0200 Subject: [PATCH] Add new interface to unpack algo --- .../monitor/CbmMcbm2018MonitorAlgoPsd.cxx | 18 +++++++----------- .../unpacker/CbmMcbm2018UnpackerAlgoPsd.cxx | 17 +++++++++++++---- .../unpacker/CbmMcbm2018UnpackerAlgoPsd.h | 1 + .../unpacker/CbmMcbm2018UnpackerTaskPsd.cxx | 6 ++++-- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorAlgoPsd.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorAlgoPsd.cxx index e68e1fff6c..31d4e0e278 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorAlgoPsd.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorAlgoPsd.cxx @@ -476,12 +476,6 @@ Bool_t CbmMcbm2018MonitorAlgoPsd::ProcessMs(const fles::Timeslice& ts, size_t uM fuLostMsgsCntInMs += uNbMessages - PsdReader.GetTotalGbtWordsRead(); } //if (uNbMessages > 1) - if (fdPrevMsTime < 0.) fdPrevMsTime = fdMsTime; - else { - fhMsLengthEvo->Fill(fdMsTime - fdStartTime, 1e9 * (fdMsTime - fdPrevMsTime)); - fdPrevMsTime = fdMsTime; - } - /// Fill histograms FillHistograms(); @@ -665,11 +659,7 @@ Bool_t CbmMcbm2018MonitorAlgoPsd::ProcessMs(const fles::Timeslice& ts, size_t uM } //if(uNbMessages > 1) - if (fdPrevMsTime < 0.) fdPrevMsTime = fdMsTime; - else { - fhMsLengthEvo->Fill(fdMsTime - fdStartTime, 1e9 * (fdMsTime - fdPrevMsTime)); - fdPrevMsTime = fdMsTime; - } + /// Fill histograms FillHistograms(); @@ -680,6 +670,12 @@ Bool_t CbmMcbm2018MonitorAlgoPsd::ProcessMs(const fles::Timeslice& ts, size_t uM } // switch + if (fdPrevMsTime < 0.) fdPrevMsTime = fdMsTime; + else { + fhMsLengthEvo->Fill(fdMsTime - fdStartTime, 1e9 * (fdMsTime - fdPrevMsTime)); + fdPrevMsTime = fdMsTime; + } + return kTRUE; } diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoPsd.cxx b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoPsd.cxx index 5a2cef28b0..bc3ed12dd7 100644 --- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoPsd.cxx +++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoPsd.cxx @@ -155,7 +155,7 @@ Bool_t CbmMcbm2018UnpackerAlgoPsd::ProcessTs(const fles::Timeslice& ts) { fulCurrentTsIdx = ts.index(); - fdTsStartTime = static_cast<Double_t>(ts.descriptor(0, 0).idx); + fdTsStartTime = static_cast<Double_t>(ts.descriptor(0, 0).idx); // FIXME ts.start_time(); /// Ignore First TS as first MS is typically corrupt if (0 == fulCurrentTsIdx) { return kTRUE; } // if( 0 == fulCurrentTsIdx ) @@ -305,7 +305,7 @@ Bool_t CbmMcbm2018UnpackerAlgoPsd::ProcessMs(const fles::Timeslice& ts, size_t u case 100: { PsdDataV100::PsdGbtReader PsdReader(pInBuff); - //if (fair::Logger::Logging(fair::Severity::debug)) PsdReader.SetPrintOutMode(true); + if (fair::Logger::Logging(fair::Severity::debug)) PsdReader.SetPrintOutMode(true); while (PsdReader.GetTotalGbtWordsRead() < uNbMessages) { int ReadResult = PsdReader.ReadMs(); @@ -315,7 +315,7 @@ Bool_t CbmMcbm2018UnpackerAlgoPsd::ProcessMs(const fles::Timeslice& ts, size_t u } if (ReadResult == 0) { - double prev_hit_time = (double) fulCurrentMsIdx /* * 25.*/ + PsdReader.VectPackHdr.at(0).uAdcTime * 12.5 + double prev_hit_time = fdTsStartTime + (double) PsdReader.VectPackHdr.at(0).uAdcTime * 12.5 - fdTimeOffsetNs; //in ns //hit loop @@ -337,7 +337,7 @@ Bool_t CbmMcbm2018UnpackerAlgoPsd::ProcessMs(const fles::Timeslice& ts, size_t u UInt_t uChanUId = fviPsdChUId[uHitChannel]; //unique ID UInt_t fuAddress = uChanUId; /// Unique channel address - Double_t fdTime = (double) fulCurrentMsIdx /* * 25.*/ + Double_t fdTime = fdTsStartTime + (double) PsdReader.VectPackHdr.at(hit_iter).uAdcTime * 12.5 - fdTimeOffsetNs; /// Time of measurement [ns] Double_t fdEdep = (double) PsdReader.VectHitHdr.at(hit_iter).uSignalCharge @@ -526,6 +526,15 @@ Bool_t CbmMcbm2018UnpackerAlgoPsd::ProcessMs(const fles::Timeslice& ts, size_t u return kTRUE; } +std::pair<std::vector<CbmPsdDigi>*, std::vector<CbmPsdDsp>*> CbmMcbm2018UnpackerAlgoPsd::unpack(const fles::Timeslice* ts, std::uint16_t icomp) +{ + AddMsComponentToList(icomp, 0x80); + Reset(); + ProcessTs(*ts); + + return std::make_pair(fPsdDigiVector, fPsdDspVector); +} + Bool_t CbmMcbm2018UnpackerAlgoPsd::SetDigiOutputPointer(std::vector<CbmPsdDigi>* const pVector) { if (nullptr == fPsdDigiVector) { diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoPsd.h b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoPsd.h index d9d64a4398..b149c706de 100644 --- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoPsd.h +++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoPsd.h @@ -73,6 +73,7 @@ public: inline void SetDspWriteMode(Bool_t bFlagIn = kTRUE) { fbDebugWriteOutput = bFlagIn; } inline void SetTimeOffsetNs(Double_t dOffsetIn = 0.0) { fdTimeOffsetNs = dOffsetIn; } + std::pair<std::vector<CbmPsdDigi>*, std::vector<CbmPsdDsp>*> unpack(const fles::Timeslice* ts, std::uint16_t icomp); private: /// Control flags diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskPsd.cxx b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskPsd.cxx index 06c6479b56..3b3db25b03 100644 --- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskPsd.cxx +++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskPsd.cxx @@ -143,7 +143,7 @@ void CbmMcbm2018UnpackerTaskPsd::AddMsComponentToList(size_t component, UShort_t fUnpackerAlgo->AddMsComponentToList(component, usDetectorId); } -Bool_t CbmMcbm2018UnpackerTaskPsd::DoUnpack(const fles::Timeslice& ts, size_t /*component*/) +Bool_t CbmMcbm2018UnpackerTaskPsd::DoUnpack(const fles::Timeslice& ts, size_t component) { if (fbMonitorMode && bMcbm2018UnpackerTaskPsdResetHistos) { @@ -152,11 +152,13 @@ Bool_t CbmMcbm2018UnpackerTaskPsd::DoUnpack(const fles::Timeslice& ts, size_t /* bMcbm2018UnpackerTaskPsdResetHistos = kFALSE; } // if( fbMonitorMode && bMcbm2018UnpackerTaskPsdResetHistos ) + fUnpackerAlgo->unpack(&ts, component); +/* if (kFALSE == fUnpackerAlgo->ProcessTs(ts)) { LOG(error) << "Failed processing TS " << ts.index() << " in unpacker algorithm class"; return kTRUE; } // if( kFALSE == fUnpackerAlgo->ProcessTs( ts ) ) - +*/ /* /// Sort the buffers of hits due to the time offsets applied => Done in the algo!!! -- GitLab