diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.cxx b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.cxx index a6daab289c6e953141fec03d900a05fa1b3fb76a..d4e58133fb058c91ceebf84155f2886220b21dff 100644 --- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.cxx +++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.cxx @@ -103,6 +103,10 @@ Bool_t CbmMcbm2018UnpackerAlgoRich::ProcessTs(const fles::Timeslice& /*ts*/) Bool_t CbmMcbm2018UnpackerAlgoRich::ProcessTs(const fles::Timeslice& ts, size_t component) { + + // Get reference TS time + fdTsStartTime = ts.start_time(); + /// Ignore First TS as first MS is typically corrupt if (0 == ts.index()) { return kTRUE; } @@ -508,14 +512,26 @@ void CbmMcbm2018UnpackerAlgoRich::WriteOutputDigi(Int_t fpgaID, Int_t channel, D Double_t ToTcorr = fbDoToTCorr ? fUnpackPar->GetToTshift(fpgaID, channel) : 0.; Int_t pixelUID = this->GetPixelUID(fpgaID, channel); //check ordering - Double_t finalTime = time + (Double_t) MSidx - fdTimeOffsetNs; + uint64_t msRefTS = 0; + if (MSidx >= fdTsStartTime) { + msRefTS = MSidx - fdTsStartTime; + } else { + std::cout<<"MS before TS Start: "<<MSidx<<" "<<fdTsStartTime<<std::endl; + } + + Double_t finalTime = time + (Double_t) msRefTS - fdTimeOffsetNs; + // Double_t finalTime = time + (Double_t) MSidx - fdTimeOffsetNs; + + if (msRefTS == 0) return; // Problems in data in current version. time is too large Double_t lastTime = 0.; if (fDigiVect.size() < 1) { fDigiVect.emplace_back(pixelUID, finalTime, tot - ToTcorr); } else { lastTime = fDigiVect[fDigiVect.size() - 1].GetTime(); - if (lastTime > finalTime) { + if (fDigiVect[0].GetTime() > finalTime) { + fDigiVect.emplace(fDigiVect.begin(), pixelUID, finalTime, tot - ToTcorr); + } else if (lastTime > finalTime) { for (int i = fDigiVect.size() - 1; i >= 0; i--) { lastTime = fDigiVect[i].GetTime(); if (lastTime <= finalTime) { diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.h b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.h index b449b1b391a95abfe612b4b222b65bd2109e11d0..201091c1a8f2c03372012cc46c909dc595c1b2c0 100644 --- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.h +++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.h @@ -348,6 +348,8 @@ public: // histograms std::map<uint32_t, std::map<Int_t, TH1D*>> fhTotMap; std::map<uint32_t, TH2D*> fhTot2dMap; + uint64_t fdTsStartTime = 0; + ClassDef(CbmMcbm2018UnpackerAlgoRich, 1); };