diff --git a/reco/steer/CbmRecoUnpack.cxx b/reco/steer/CbmRecoUnpack.cxx index 191dcff0cfc30eb89ff61288807ea7fcc61e3cd6..c5e02f9be42ad2043bbeb19609723e35c0f4810a 100644 --- a/reco/steer/CbmRecoUnpack.cxx +++ b/reco/steer/CbmRecoUnpack.cxx @@ -41,8 +41,8 @@ void CbmRecoUnpack::Finish() if (fRichConfig) fRichConfig->GetUnpacker()->Finish(); if (fStsConfig) fStsConfig->GetUnpacker()->Finish(); if (fTofConfig) fTofConfig->GetUnpacker()->Finish(); - if (fTrdConfig) fTrdConfig->GetUnpacker()->Finish(); - if (fTrdConfig2D) fTrdConfig2D->GetUnpacker()->Finish(); + if (fTrd1DConfig) fTrd1DConfig->GetUnpacker()->Finish(); + if (fTrd2DConfig) fTrd2DConfig->GetUnpacker()->Finish(); } // ---------------------------------------------------------------------------- @@ -70,20 +70,27 @@ Bool_t CbmRecoUnpack::Init() // --- Sts if (fStsConfig) fStsConfig->Init(ioman); // --- Tof - // if (fTofConfig) fTofConfig->Init(ioman); + if (fTofConfig) fTofConfig->Init(ioman); // --- Trd - if (fTrdConfig) fTrdConfig->Init(ioman); + if (fTrd1DConfig) fTrd1DConfig->Init(ioman); // --- TRD2D - if (fTrdConfig2D->GetOutputBranchName() == fTrdConfig->GetOutputBranchName()) { - fTrdConfig2D->SetOutputVec(fTrdConfig->GetOutputVec()); - if (fTrdConfig2D) fTrdConfig2D->InitUnpacker(); - } - else { - if (fTrdConfig2D) fTrdConfig2D->Init(ioman); + if (fTrd2DConfig) { + if (fTrd1DConfig) { + if (fTrd2DConfig->GetOutputBranchName() == fTrd1DConfig->GetOutputBranchName()) { + LOG(info) << fTrd2DConfig->GetName() << "::Init() ---------------------------------"; + fTrd2DConfig->SetOutputVec(fTrd1DConfig->GetOutputVec()); + fTrd2DConfig->InitUnpacker(); + LOG(info) << fTrd2DConfig->GetName() << " succesful initialized -----------------\n"; + } + else { + fTrd2DConfig->Init(ioman); + } + } + else { + fTrd2DConfig->Init(ioman); + } } // This is an ugly work around, because the TRD and TRD2D want to access the same vector and there is no function to retrieve a writeable vector<obj> from the FairRootManager, especially before the branches are created, as far as I am aware. The second option workaround is in in Init() to look for the fasp config and create a separate branch for fasp created CbmTrdDigis PR 072021 - // --- Tof - if (fTofConfig) fTofConfig->Init(ioman); return kTRUE; } @@ -102,13 +109,11 @@ void CbmRecoUnpack::Reset() // ---- Sts ---- if (fStsConfig) fStsConfig->Reset(); // ---- Tof ---- - // if (fTofConfig) fTofConfig->Reset(); + if (fTofConfig) fTofConfig->Reset(); // ---- Trd ---- - if (fTrdConfig) fTrdConfig->Reset(); + if (fTrd1DConfig) fTrd1DConfig->Reset(); // ---- Trd2D ---- - if (fTrdConfig2D) fTrdConfig2D->Reset(); - // ---- Tof ---- - if (fTofConfig) fTofConfig->Reset(); + if (fTrd2DConfig) fTrd2DConfig->Reset(); } // ---------------------------------------------------------------------------- @@ -148,25 +153,24 @@ void CbmRecoUnpack::Unpack(unique_ptr<Timeslice> ts) unpack(×lice, component, fStsConfig, fStsConfig->GetOptOutAVec(), fStsConfig->GetOptOutBVec())); break; } + case fkFlesTof: { + if (fTofConfig) + fCbmTsEventHeader->SetNDigisTof( + unpack(×lice, component, fTofConfig, fTofConfig->GetOptOutAVec(), fTofConfig->GetOptOutBVec())); + break; + } case fkFlesTrd: { - if (fTrdConfig) + if (fTrd1DConfig) fCbmTsEventHeader->SetNDigisTrd( - unpack(×lice, component, fTrdConfig, fTrdConfig->GetOptOutAVec(), fTrdConfig->GetOptOutBVec())); + unpack(×lice, component, fTrd1DConfig, fTrd1DConfig->GetOptOutAVec(), fTrd1DConfig->GetOptOutBVec())); break; } case fkFlesTrd2D: { - if (fTrdConfig2D) + if (fTrd2DConfig) fCbmTsEventHeader->SetNDigisTrd2D( - unpack(×lice, component, fTrdConfig2D, fTrdConfig2D->GetOptOutAVec(), fTrdConfig2D->GetOptOutBVec())); - break; - } - case fkFlesTof: { - if (fTofConfig) - fCbmTsEventHeader->SetNDigisTof( - unpack(×lice, component, fTofConfig, fTofConfig->GetOptOutAVec(), fTofConfig->GetOptOutBVec())); + unpack(×lice, component, fTrd2DConfig, fTrd2DConfig->GetOptOutAVec(), fTrd2DConfig->GetOptOutBVec())); break; } - default: { if (fDoDebugPrints) LOG(error) << "Unpack: Unknown system ID " << systemId << " for component " << component; break; diff --git a/reco/steer/CbmRecoUnpack.h b/reco/steer/CbmRecoUnpack.h index c1d9cd2c0178cc9afb790ad5c18d30f91f5dc421..755034d561ae2d791d1ac454887e9e8f251dd7d0 100644 --- a/reco/steer/CbmRecoUnpack.h +++ b/reco/steer/CbmRecoUnpack.h @@ -82,10 +82,10 @@ public: // void SetUnpackConfig(std::shared_ptr<CbmTofUnpackConfig> config) { fTofConfig = config; } /** @brief Set the Trd Unpack Config @param config */ - void SetUnpackConfig(std::shared_ptr<CbmTrdUnpackConfig> config) { fTrdConfig = config; } + void SetUnpackConfig(std::shared_ptr<CbmTrdUnpackConfig> config) { fTrd1DConfig = config; } /** @brief Set the Trd2D Unpack Config @param config */ - void SetUnpackConfig(std::shared_ptr<CbmTrdUnpackConfigFasp2D> config) { fTrdConfig2D = config; } + void SetUnpackConfig(std::shared_ptr<CbmTrdUnpackConfigFasp2D> config) { fTrd2DConfig = config; } /** @brief Set the Tof Unpack Config @param config */ void SetUnpackConfig(std::shared_ptr<CbmTofUnpackConfig> config) { fTofConfig = config; } @@ -210,10 +210,10 @@ private: std::shared_ptr<CbmTofUnpackConfig> fTofConfig = nullptr; //! /** @brief Configuration of the Trd unpacker. Provides the configured algorithm */ - std::shared_ptr<CbmTrdUnpackConfig> fTrdConfig = nullptr; //! + std::shared_ptr<CbmTrdUnpackConfig> fTrd1DConfig = nullptr; //! /** @brief Configuration of the Trd unpacker. Provides the configured algorithm */ - std::shared_ptr<CbmTrdUnpackConfigFasp2D> fTrdConfig2D = nullptr; //! + std::shared_ptr<CbmTrdUnpackConfigFasp2D> fTrd2DConfig = nullptr; //! /** @brief Pointer to the Timeslice start time used to write it to the output tree @remark since we hand this to the FairRootManager it also wants to delete it and we do not have to take care of deletion */ CbmTsEventHeader* fCbmTsEventHeader = nullptr;