From f4b749fb886285239cd4fc0ce61d520bf1e2c040 Mon Sep 17 00:00:00 2001 From: "P.-A. Loizeau" <p.-a.loizeau@gsi.de> Date: Thu, 21 Mar 2024 12:06:29 +0100 Subject: [PATCH] [online] add all detectors in digi dump to output file --- algo/global/Reco.cxx | 12 ++++++-- algo/global/RecoResults.h | 14 +++++++-- algo/global/StorableRecoResults.h | 48 +++++++++++++++++++++++++++---- reco/app/cbmreco/main.cxx | 16 ++++++++--- 4 files changed, 77 insertions(+), 13 deletions(-) diff --git a/algo/global/Reco.cxx b/algo/global/Reco.cxx index e793f22184..e308d7dc3f 100644 --- a/algo/global/Reco.cxx +++ b/algo/global/Reco.cxx @@ -1,6 +1,6 @@ /* Copyright (C) 2023 FIAS Frankfurt Institute for Advanced Studies, Frankfurt / Main SPDX-License-Identifier: GPL-3.0-only - Authors: Felix Weiglhofer [committer] */ + Authors: Felix Weiglhofer [committer], P.-A. Loizeau */ #include "Reco.h" #include "BuildInfo.h" @@ -279,7 +279,15 @@ RecoResults Reco::Run(const fles::Timeslice& ts) QueueTrackingMetrics(trackingOutput.monitorData); } - if (Opts().HasOutput(RecoData::RawDigi)) results.stsDigis = std::move(digis.fSts); + if (Opts().HasOutput(RecoData::RawDigi)) { + results.bmonDigis = std::move(digis.fBmon); + results.stsDigis = std::move(digis.fSts); + results.muchDigis = std::move(digis.fMuch); + results.trd2dDigis = std::move(digis.fTrd2d); + results.trdDigis = std::move(digis.fTrd); + results.tofDigis = std::move(digis.fTof); + results.richDigis = std::move(digis.fRich); + } if (Opts().HasOutput(RecoData::DigiEvent)) results.events = std::move(events); if (Opts().HasOutput(RecoData::Cluster)) results.stsClusters = std::move(stsClusters); if (Opts().HasOutput(RecoData::Hit)) { diff --git a/algo/global/RecoResults.h b/algo/global/RecoResults.h index 4fa01c8f16..f40212ae11 100644 --- a/algo/global/RecoResults.h +++ b/algo/global/RecoResults.h @@ -1,6 +1,6 @@ /* Copyright (C) 2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt SPDX-License-Identifier: GPL-3.0-only - Authors: Sergei Zharko [committer], Felix Weiglhofer */ + Authors: Sergei Zharko [committer], Felix Weiglhofer, P.-A. Loizeau */ /// \file RecoResults.h /// \date 22.10.2023 @@ -25,11 +25,21 @@ namespace cbm::algo /// @name RecoResults /// @brief Structure to keep reconstructed results: digi-events, hits and tracks struct RecoResults { - std::vector<DigiEvent> events; + PODVector<CbmBmonDigi> bmonDigis; PODVector<CbmStsDigi> stsDigis; + PODVector<CbmMuchDigi> muchDigis; + PODVector<CbmTrdDigi> trd2dDigis; + PODVector<CbmTrdDigi> trdDigis; + PODVector<CbmTofDigi> tofDigis; + PODVector<CbmRichDigi> richDigis; + + std::vector<DigiEvent> events; + PartitionedVector<sts::Cluster> stsClusters; + PartitionedSpan<sts::Hit> stsHits; PartitionedVector<tof::Hit> tofHits; + ca::Vector<ca::Track> tracks; ca::Vector<std::vector<std::pair<uint32_t, uint32_t>>> trackStsHitIndices; ca::Vector<std::vector<std::pair<uint32_t, uint32_t>>> trackTofHitIndices; diff --git a/algo/global/StorableRecoResults.h b/algo/global/StorableRecoResults.h index 818a981caa..dc44a3acff 100644 --- a/algo/global/StorableRecoResults.h +++ b/algo/global/StorableRecoResults.h @@ -1,6 +1,6 @@ /* Copyright (C) 2023 FIAS Frankfurt Institute for Advanced Studies, Frankfurt / Main SPDX-License-Identifier: GPL-3.0-only - Authors: Felix Weiglhofer [committer] */ + Authors: Felix Weiglhofer [committer], P.-A. Loizeau */ #ifndef CBM_ALGO_GLOBAL_STORABLE_RECO_RESULTS_H #define CBM_ALGO_GLOBAL_STORABLE_RECO_RESULTS_H @@ -43,12 +43,30 @@ namespace cbm::algo */ uint64_t TsStartTime() const { return fTsStartTime; } - std::vector<CbmDigiEvent>& DigiEvents() { return fDigiEvents; } - const std::vector<CbmDigiEvent>& DigiEvents() const { return fDigiEvents; } + std::vector<CbmBmonDigi>& BmonDigis() { return fBmonDigis; } + const std::vector<CbmBmonDigi>& BmonDigis() const { return fBmonDigis; } std::vector<CbmStsDigi>& StsDigis() { return fStsDigis; } const std::vector<CbmStsDigi>& StsDigis() const { return fStsDigis; } + std::vector<CbmMuchDigi>& MuchDigis() { return fMuchDigis; } + const std::vector<CbmMuchDigi>& MuchDigis() const { return fMuchDigis; } + + std::vector<CbmTrdDigi>& Trd2dDigis() { return fTrd2dDigis; } + const std::vector<CbmTrdDigi>& Trd2dDigis() const { return fTrd2dDigis; } + + std::vector<CbmTrdDigi>& TrdDigis() { return fTrdDigis; } + const std::vector<CbmTrdDigi>& TrdDigis() const { return fTrdDigis; } + + std::vector<CbmTofDigi>& TofDigis() { return fTofDigis; } + const std::vector<CbmTofDigi>& TofDigis() const { return fTofDigis; } + + std::vector<CbmRichDigi>& RichDigis() { return fRichDigis; } + const std::vector<CbmRichDigi>& RichDigis() const { return fRichDigis; } + + std::vector<CbmDigiEvent>& DigiEvents() { return fDigiEvents; } + const std::vector<CbmDigiEvent>& DigiEvents() const { return fDigiEvents; } + PartitionedVector<sts::Cluster>& StsClusters() { return fStsClusters; } const PartitionedVector<sts::Cluster>& StsClusters() const { return fStsClusters; } @@ -71,8 +89,19 @@ namespace cbm::algo uint64_t fTsIndex = UINT64_MAX; uint64_t fTsStartTime = UINT64_MAX; - std::vector<CbmDigiEvent> fDigiEvents; + // Unpackers output + std::vector<CbmBmonDigi> fBmonDigis; std::vector<CbmStsDigi> fStsDigis; + std::vector<CbmMuchDigi> fMuchDigis; + std::vector<CbmTrdDigi> fTrd2dDigis; + std::vector<CbmTrdDigi> fTrdDigis; + std::vector<CbmTofDigi> fTofDigis; + std::vector<CbmRichDigi> fRichDigis; + + // Event builder/filter output + std::vector<CbmDigiEvent> fDigiEvents; + + // Local Reconstruction output PartitionedVector<sts::Cluster> fStsClusters; PartitionedVector<sts::Hit> fStsHits; PartitionedVector<tof::Hit> fTofHits; @@ -96,11 +125,20 @@ namespace cbm::algo ar& fTsIndex; ar& fTsStartTime; - ar& fDigiEvents; + ar& fBmonDigis; ar& fStsDigis; + ar& fMuchDigis; + ar& fTrd2dDigis; + ar& fTrdDigis; + ar& fTofDigis; + ar& fRichDigis; + + ar& fDigiEvents; + ar& fStsClusters; ar& fStsHits; ar& fTofHits; + ar& fTracks; ar& fTrackStsHitIndices; ar& fTrackTofHitIndices; diff --git a/reco/app/cbmreco/main.cxx b/reco/app/cbmreco/main.cxx index 475ceef3fe..8b2153b5ac 100644 --- a/reco/app/cbmreco/main.cxx +++ b/reco/app/cbmreco/main.cxx @@ -30,10 +30,18 @@ std::shared_ptr<StorableRecoResults> makeStorableRecoResults(const fles::Timesli } // TODO: some of these copies can be avoided / made into moves - storable->StsDigis() = ToStdVector(results.stsDigis); - storable->StsClusters() = results.stsClusters; - storable->StsHits() = results.stsHits; - storable->TofHits() = results.tofHits; + storable->BmonDigis() = ToStdVector(results.bmonDigis); + storable->StsDigis() = ToStdVector(results.stsDigis); + storable->MuchDigis() = ToStdVector(results.muchDigis); + storable->Trd2dDigis() = ToStdVector(results.trd2dDigis); + storable->TrdDigis() = ToStdVector(results.trdDigis); + storable->TofDigis() = ToStdVector(results.tofDigis); + storable->RichDigis() = ToStdVector(results.richDigis); + + storable->StsClusters() = results.stsClusters; + storable->StsHits() = results.stsHits; + storable->TofHits() = results.tofHits; + storable->Tracks() = results.tracks; storable->TrackStsHitIndices() = results.trackStsHitIndices; storable->TrackTofHitIndices() = results.trackTofHitIndices; -- GitLab