From b862c1c49c18f82839759e78108864b7daca6d5e Mon Sep 17 00:00:00 2001 From: "s.zharko@gsi.de" <s.zharko@gsi.de> Date: Sat, 15 Feb 2025 15:24:59 +0100 Subject: [PATCH] beamtime: update of CbmOnlineParWrite with CA tracking --- algo/global/ParFiles.cxx | 4 ++-- reco/L1/CbmL1.cxx | 2 ++ reco/kfnew/CbmKfTrackingSetupBuilder.cxx | 12 ++++++++--- reco/kfnew/CbmKfTrackingSetupBuilder.h | 11 +++++++++- reco/steer/CbmOnlineParWrite.cxx | 26 +++++++++++++++++++++++- reco/steer/CbmOnlineParWrite.h | 2 ++ 6 files changed, 50 insertions(+), 7 deletions(-) diff --git a/algo/global/ParFiles.cxx b/algo/global/ParFiles.cxx index bc67f0843f..ac2c3b410a 100644 --- a/algo/global/ParFiles.cxx +++ b/algo/global/ParFiles.cxx @@ -95,8 +95,8 @@ ParFiles::ParFiles(uint32_t runId) case Setup::mCBM2025_02: bmon.readout = "mcbm2025_02/BmonReadout_mcbm2025.yaml"; - bmon.calibrate = "mcbm2025_05/BmonCalibratePar.yaml"; - bmon.hitfinder = "mcbm2025_05/BmonHitfinderPar.yaml"; + bmon.calibrate = "mcbm2025_02/BmonCalibratePar.yaml"; + bmon.hitfinder = "mcbm2025_02/BmonHitfinderPar.yaml"; sts.readout = "mcbm2025_02/StsReadout_mcbm2025.yaml"; sts.chanMask = "mcbm2025_02/StsChannelMaskSet_mcbm2025.yaml"; diff --git a/reco/L1/CbmL1.cxx b/reco/L1/CbmL1.cxx index 37d8c61be3..8337f7ac78 100644 --- a/reco/L1/CbmL1.cxx +++ b/reco/L1/CbmL1.cxx @@ -187,6 +187,8 @@ try { bool bUseTRD = pSetupBuilder->HasHits(ca::EDetectorID::kTrd); bool bUseTOF = pSetupBuilder->HasHits(ca::EDetectorID::kTof); + LOG(info) << "!!!!!!! " << bUseSTS; + // ***************************** // ** ** // ** GEOMETRY INITIALIZATION ** diff --git a/reco/kfnew/CbmKfTrackingSetupBuilder.cxx b/reco/kfnew/CbmKfTrackingSetupBuilder.cxx index 338a86b63d..022026db05 100644 --- a/reco/kfnew/CbmKfTrackingSetupBuilder.cxx +++ b/reco/kfnew/CbmKfTrackingSetupBuilder.cxx @@ -41,9 +41,15 @@ void TrackingSetupBuilder::CheckDetectorPresence() auto Check = [&](EDetectorID detID) { auto modId = cbm::algo::ca::ToCbmModuleId(detID); fvbDetInGeometry[detID] = CbmSetup::Instance()->IsActive(modId); - fvbDetHasHits[detID] = fvbDetInGeometry[detID] && FairRootManager::Instance()->GetObject(kDetHitBrName[detID]); - LOG(info) << fmt::format("\t{:6} in geometry: {:5}, has hits: {:5}", ToString(modId), fvbDetInGeometry[detID], - fvbDetHasHits[detID]); + if (!fbIgnoreHitPresence) { + fvbDetHasHits[detID] = fvbDetInGeometry[detID] && FairRootManager::Instance()->GetObject(kDetHitBrName[detID]); + LOG(info) << fmt::format("\t{:6} in geometry: {:5}, has hits: {:5}", ToString(modId), fvbDetInGeometry[detID], + fvbDetHasHits[detID]); + } + else { + fvbDetHasHits[detID] = fvbDetInGeometry[detID]; + LOG(info) << fmt::format("\t{:6} in geometry: {:5}", ToString(modId), fvbDetInGeometry[detID]); + } }; Check(EDetectorID::kMvd); diff --git a/reco/kfnew/CbmKfTrackingSetupBuilder.h b/reco/kfnew/CbmKfTrackingSetupBuilder.h index 0965882cce..cae4c1ba4d 100644 --- a/reco/kfnew/CbmKfTrackingSetupBuilder.h +++ b/reco/kfnew/CbmKfTrackingSetupBuilder.h @@ -48,6 +48,14 @@ namespace cbm::kf /// \brief Checks, if a tracking detector has hits bool HasHits(cbm::algo::ca::EDetectorID detID) const { return fvbDetHasHits[detID]; } + /// \brief Sets hits ignoring (DEBUG FLAG) + void SetIgnoreHitPresence(bool ok = true) + { + fbIgnoreHitPresence = ok; + fbInitialized = false; + CheckDetectorPresence(); + } + // Disable copy and move TrackingSetupBuilder(const TrackingSetupBuilder&) = delete; TrackingSetupBuilder(TrackingSetupBuilder&&) = delete; @@ -111,7 +119,8 @@ namespace cbm::kf /// \brief Checks, if the setup was already initialized /// \note Each call of the setup initializer resets the setup builder, so the initialization is called /// in the next MakeSetup call - bool fbInitialized{false}; ///< Check, if the setup builder initialized + bool fbInitialized{false}; ///< Check, if the setup builder initialized + bool fbIgnoreHitPresence{false}; ///< Ignores hit presence, when active subsystems are determined }; diff --git a/reco/steer/CbmOnlineParWrite.cxx b/reco/steer/CbmOnlineParWrite.cxx index 658ee50dd6..5ce40e2c34 100644 --- a/reco/steer/CbmOnlineParWrite.cxx +++ b/reco/steer/CbmOnlineParWrite.cxx @@ -4,6 +4,8 @@ #include "CbmOnlineParWrite.h" +#include "CbmKfTrackingSetupBuilder.h" +#include "CbmL1.h" #include "CbmMcbmUtils.h" #include "CbmSetup.h" #include "CbmSinkDummy.h" @@ -19,6 +21,7 @@ #include "CbmTaskTofClusterizerParWrite.h" #include "CbmTaskTrdHitFinderParWrite.h" #include "CbmTaskTrdUnpackParWrite.h" +#include "CbmTrackingDetectorInterfaceInit.h" #include "CbmTrdParSetAsic.h" #include "CbmTrdParSetDigi.h" @@ -251,7 +254,8 @@ void CbmOnlineParWrite::AddSts() sensorParSet->SetParSensor(stsAddress10, sensor6cm); sensorParSet->SetParSensor(stsAddress11, sensor6cm); } - else if (fConfig.setupType == Setup::mCBM2024_03 || fConfig.setupType == Setup::mCBM2024_05 || fConfig.setupType == Setup::mCBM2025_02) { + else if (fConfig.setupType == Setup::mCBM2024_03 || fConfig.setupType == Setup::mCBM2024_05 + || fConfig.setupType == Setup::mCBM2025_02) { uint32_t addr01 = 0x10008012; uint32_t addr02 = 0x10018012; uint32_t addr03 = 0x10008412; @@ -314,6 +318,24 @@ void CbmOnlineParWrite::AddSts() fRun->AddTask(recoSts); } +void CbmOnlineParWrite::AddCa() +{ + + auto* pSetupBuilder{cbm::kf::TrackingSetupBuilder::Instance()}; + pSetupBuilder->SetIgnoreHitPresence(); + + // Tracking detector interfaces initialization + fRun->AddTask(new CbmTrackingDetectorInterfaceInit{}); + + // Tracking initialization class + auto* pCa = new CbmL1(); + pCa->SetMcbmMode(); + pCa->SetInitMode(CbmL1::EInitMode::Param); + pCa->SetParameterFilename(Form("./%s.ca.par", fGeoSetupTag.Data())); + fRun->AddTask(pCa); +} + + void CbmOnlineParWrite::Run(const Config& config) { // Copied and adjusted from macro/beamtime/mcbm2022/trd_hitfinder_run.C @@ -351,6 +373,7 @@ void CbmOnlineParWrite::Run(const Config& config) } LOG(info) << "Using geometry setup: " << geoSetupTag; + fGeoSetupTag = geoSetupTag; TString geoFile = fSrcDir + "/macro/run/data/" + geoSetupTag + ".geo.root"; fSetup = CbmSetup::Instance(); @@ -406,6 +429,7 @@ void CbmOnlineParWrite::Run(const Config& config) // ----- Add detectors ------------------------------------------------ AddDetectors(); + AddCa(); // ----- Parameter database -------------------------------------------- FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); diff --git a/reco/steer/CbmOnlineParWrite.h b/reco/steer/CbmOnlineParWrite.h index 194d5dd944..35ab63d074 100644 --- a/reco/steer/CbmOnlineParWrite.h +++ b/reco/steer/CbmOnlineParWrite.h @@ -35,6 +35,7 @@ class CbmOnlineParWrite { private: Config fConfig; TString fSrcDir = ""; // CbmRoot Source directory + TString fGeoSetupTag = ""; // Geometry setup tag CbmSetup* fSetup = nullptr; // Global Geometry setup FairRunAna* fRun = nullptr; // FairRunAna object TList* fParList = nullptr; // List of parameter files, opened with FairRuntimeDb @@ -44,4 +45,5 @@ class CbmOnlineParWrite { void AddTrd(); void AddTof(); void AddSts(); + void AddCa(); }; -- GitLab