diff --git a/algo/base/Definitions.h b/algo/base/Definitions.h index 57e93adc48b6fd87b334df8f68a52a39ffc2044b..e77cbea124c2dd87a8f423b207a06f84b566d8ac 100644 --- a/algo/base/Definitions.h +++ b/algo/base/Definitions.h @@ -50,7 +50,8 @@ namespace cbm::algo enum class Setup { mCBM2022, - mCBM2024, + mCBM2024_03, + mCBM2024_05, }; } // namespace cbm::algo @@ -95,7 +96,8 @@ CBM_ENUM_DICT(cbm::algo::RecoData, CBM_ENUM_DICT(cbm::algo::Setup, {"mCBM2022", cbm::algo::Setup::mCBM2022}, - {"mCBM2024", cbm::algo::Setup::mCBM2024} + {"mCBM2024_03", cbm::algo::Setup::mCBM2024_03}, + {"mCBM2024_05", cbm::algo::Setup::mCBM2024_05} ); #endif diff --git a/algo/detectors/tof/TrackingInterface.cxx b/algo/detectors/tof/TrackingInterface.cxx index e8a6d0c9a9c6f19318866ecc906f1ff952dd2394..69db5638f0bef9bc9835aa621cd7e500268b839e 100644 --- a/algo/detectors/tof/TrackingInterface.cxx +++ b/algo/detectors/tof/TrackingInterface.cxx @@ -28,6 +28,7 @@ void TrackingInterface::Init() if (!this->GetContext()) { // Default parameters for tests L_(info) << "TOF: TrackingInterface: no context found, using default setup"; // Par: tof_v21j_mcbm.digibdf.par + // Hardcoded setup, required for DigiEventSelector unittest fvNofSm = {5, 0, 1, 0, 0, 1, 1, 1, 0, 1}; fvNofRpc = {5, 3, 5, 1, 1, 1, 2, 2, 1, 2}; fvTrackingStationId.resize(fvNofSm.size()); @@ -42,21 +43,6 @@ void TrackingInterface::Init() fvTrackingStationId[8] = {}; fvTrackingStationId[9] = {2, 2}; } - else if (Opts().RunId() >= 2901) { // mcbm_beam_2024_03_22_gold - fvNofSm = {5, 0, 1, 0, 0, 1, 1, 0, 0, 2}; - fvNofRpc = {5, 3, 5, 1, 1, 1, 2, 2, 1, 2}; - fvTrackingStationId.resize(fvNofSm.size()); - fvTrackingStationId[0] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - fvTrackingStationId[1] = {}; - fvTrackingStationId[2] = {5, 5, 5, 5, 5}; - fvTrackingStationId[3] = {}; - fvTrackingStationId[4] = {}; - fvTrackingStationId[5] = {-1}; - fvTrackingStationId[6] = {1, 2}; - fvTrackingStationId[7] = {}; - fvTrackingStationId[8] = {}; - fvTrackingStationId[9] = {1, 2, 3, 4}; - } else { ParFiles parFiles(Opts().RunId()); auto setup = yaml::ReadFromFile<HitfindSetup>(Opts().ParamsDir() / parFiles.tof.hitfinder); diff --git a/algo/global/ParFiles.cxx b/algo/global/ParFiles.cxx index 96285ba4f8d05150cb679d1a3914b8658eee3190..dc4b359db9b5d5be7a50b79c87d18abf91cc73d2 100644 --- a/algo/global/ParFiles.cxx +++ b/algo/global/ParFiles.cxx @@ -3,42 +3,75 @@ Authors: Felix Weiglhofer [committer] */ #include "ParFiles.h" +#include "Exceptions.h" + using namespace cbm::algo; ParFiles::ParFiles(uint32_t runId) { - bool is2024 = 2724 <= runId; + if (runId < 2724) { + setup = Setup::mCBM2022; + } + else if (runId < 2918) { + setup = Setup::mCBM2024_03; + } + else { + setup = Setup::mCBM2024_05; + } - if (is2024) { - sts.readout = "StsReadout_mcbm2024.yaml"; - sts.chanMask = "StsChannelMaskSet_mcbm2024.yaml"; - sts.walkMap = "StsWalkMap_mcbm2024.yaml"; - sts.hitfinder = "StsHitfinder_mcbm2024.yaml"; + switch (setup) { - tof.calibrate = "TofCalibratePar_mcbm2024.yaml"; - tof.hitfinder = "TofHitfinderPar_mcbm2024.yaml"; + case Setup::mCBM2022: + sts.readout = "StsReadout_mcbm2022.yaml"; + sts.chanMask = "StsChannelMaskSet_mcbm2022.yaml"; + sts.walkMap = "StsWalkMap_mcbm2022.yaml"; + sts.hitfinder = "StsHitfinder_mcbm2022.yaml"; - trd.readout = "TrdReadoutSetup_mcbm2024.yaml"; - trd.readout2d = "TrdReadout2DSetup_mcbm2022.yaml"; // TODO: no new readout for TRD2D? - trd.hitfinder = "TrdHitfinderPar_mcbm2024.yaml"; - trd.hitfinder2d = "TrdHitfinder2DPar_mcbm2024.yaml"; + tof.calibrate = "TofCalibratePar_mcbm2022.yaml"; + tof.hitfinder = "TofHitfinderPar_mcbm2022.yaml"; - ca.mainConfig = "TrackingChainConfig_mcbm2024.yaml"; - } - else { // Assume 2022 setup - sts.readout = "StsReadout_mcbm2022.yaml"; - sts.chanMask = "StsChannelMaskSet_mcbm2022.yaml"; - sts.walkMap = "StsWalkMap_mcbm2022.yaml"; - sts.hitfinder = "StsHitfinder_mcbm2022.yaml"; + trd.readout = "TrdReadoutSetup_mcbm2022.yaml"; + trd.readout2d = "TrdReadout2DSetup_mcbm2022.yaml"; + trd.hitfinder = "TrdHitfinderPar_mcbm2022.yaml"; + trd.hitfinder2d = "TrdHitfinder2DPar_mcbm2022.yaml"; + + ca.mainConfig = "TrackingChainConfig_mcbm2022.yaml"; + break; + + case Setup::mCBM2024_03: + sts.readout = "StsReadout_mcbm2024.yaml"; + sts.chanMask = "StsChannelMaskSet_mcbm2024.yaml"; + sts.walkMap = "StsWalkMap_mcbm2024.yaml"; + sts.hitfinder = "StsHitfinder_mcbm2024.yaml"; + + tof.calibrate = "TofCalibratePar_mcbm2024.yaml"; + tof.hitfinder = "TofHitfinderPar_mcbm2024.yaml"; + + trd.readout = "TrdReadoutSetup_mcbm2024.yaml"; + trd.readout2d = "TrdReadout2DSetup_mcbm2022.yaml"; // TODO: no new readout for TRD2D? + trd.hitfinder = "TrdHitfinderPar_mcbm2024.yaml"; + trd.hitfinder2d = "TrdHitfinder2DPar_mcbm2024.yaml"; + + ca.mainConfig = "TrackingChainConfig_mcbm2024.yaml"; + break; + + case Setup::mCBM2024_05: + sts.readout = "StsReadout_mcbm2024.yaml"; + sts.chanMask = "StsChannelMaskSet_mcbm2024.yaml"; + sts.walkMap = "StsWalkMap_mcbm2024.yaml"; + sts.hitfinder = "mcbm2024_05/StsHitfinder.yaml"; + + tof.calibrate = "mcbm2024_05/TofCalibratePar.yaml"; + tof.hitfinder = "mcbm2024_05/TofHitfinderPar.yaml"; - tof.calibrate = "TofCalibratePar_mcbm2022.yaml"; - tof.hitfinder = "TofHitfinderPar_mcbm2022.yaml"; + trd.readout = "TrdReadoutSetup_mcbm2024.yaml"; + trd.readout2d = "TrdReadout2DSetup_mcbm2022.yaml"; // TODO: no new readout for TRD2D? + trd.hitfinder = "mcbm2024_05/TrdHitfinderPar.yaml"; + trd.hitfinder2d = "mcbm2024_05/TrdHitfinder2DPar.yaml"; - trd.readout = "TrdReadoutSetup_mcbm2022.yaml"; - trd.readout2d = "TrdReadout2DSetup_mcbm2022.yaml"; - trd.hitfinder = "TrdHitfinderPar_mcbm2022.yaml"; - trd.hitfinder2d = "TrdHitfinder2DPar_mcbm2022.yaml"; + ca.mainConfig = "mcbm2024_05/TrackingChainConfig.yaml"; + break; - ca.mainConfig = "TrackingChainConfig_mcbm2022.yaml"; + default: throw FatalError("Unknown setup: {}", ToString(setup)); } } diff --git a/algo/global/ParFiles.h b/algo/global/ParFiles.h index 877e06e000c78f960265375d78b910688680706a..6c93c908a83c770fec969bbce2518a2e3704161d 100644 --- a/algo/global/ParFiles.h +++ b/algo/global/ParFiles.h @@ -8,6 +8,7 @@ * @brief This file contains the definition of the ParFiles class. */ +#include "Definitions.h" #include "compat/Filesystem.h" namespace cbm::algo @@ -21,6 +22,8 @@ namespace cbm::algo ParFiles(uint32_t runId); + Setup setup; + struct { fs::path readout; fs::path chanMask; diff --git a/algo/global/Reco.cxx b/algo/global/Reco.cxx index fcfdc634aa98497e11e33d879d15ab4349aed62d..a52f9a5ac4f88050be6eb8af5e0f5a99c607fbf3 100644 --- a/algo/global/Reco.cxx +++ b/algo/global/Reco.cxx @@ -100,6 +100,7 @@ void Reco::Init(const Options& opts) fContext.recoParams = yaml::ReadFromFile<RecoParams>(opts.ParamsDir() / "RecoParams.yaml"); ParFiles parFiles(opts.RunId()); + L_(info) << "Using parameter files for setup " << parFiles.setup; // Unpackers if (Opts().Has(Subsystem::BMON) && Opts().Has(Step::Unpack)) { diff --git a/external/InstallParameter.cmake b/external/InstallParameter.cmake index 518fdb959bcb27cbad03411a141762bbb74610a9..aa41ecb0a5a3688443481cdf15a33b62c378ce32 100644 --- a/external/InstallParameter.cmake +++ b/external/InstallParameter.cmake @@ -1,4 +1,4 @@ -set(PARAMETER_VERSION b8cfe79ee4091e81d7978e0b889041ac3fc8a0b0) # 2024-05-09 +set(PARAMETER_VERSION 5a38133b717061a8a2c3d386c56d72a02634df12) # 2024-05-09 set(PARAMETER_SRC_URL "https://git.cbm.gsi.de/CbmSoft/cbmroot_parameter.git") diff --git a/reco/steer/CbmOnlineParWrite.cxx b/reco/steer/CbmOnlineParWrite.cxx index 14a6d5bd8d51226850bbe38fc8fceadfdecaecb5..29c33293334e37bce1fe8a35166a17b486b5df18 100644 --- a/reco/steer/CbmOnlineParWrite.cxx +++ b/reco/steer/CbmOnlineParWrite.cxx @@ -91,23 +91,30 @@ void CbmOnlineParWrite::AddTof() Double_t dDeadtime = 50.; TString TofFileFolder = fSrcDir + "/parameters/mcbm/"; + bool doCalibration = false; TString cCalId = "490.100.5.0"; Int_t iCalSet = 30040500; // calibration settings + TString cFname = ""; switch (fConfig.setupType) { case Setup::mCBM2022: + doCalibration = true; cCalId = "2391.5.000"; iCalSet = 22002500; break; - case Setup::mCBM2024: + case Setup::mCBM2024_03: + doCalibration = true; cCalId = "2912.1"; iCalSet = 012032500; break; + case Setup::mCBM2024_05: doCalibration = false; break; default: throw std::runtime_error("TOF: Unknown setup type"); } - TString cFname = - Form("%s/%s_set%09d_%02d_%01dtofClust.hst.root", TofFileFolder.Data(), cCalId.Data(), iCalSet, calMode, calSel); + if (cFname.IsNull() && doCalibration) { + cFname = + Form("%s/%s_set%09d_%02d_%01dtofClust.hst.root", TofFileFolder.Data(), cCalId.Data(), iCalSet, calMode, calSel); + } auto* tofCluster = new CbmTaskTofClusterizerParWrite("Task TOF Clusterizer", 0, 1); tofCluster->SetCalParFileName(cFname); @@ -198,11 +205,8 @@ void CbmOnlineParWrite::AddSts() sensorParSet->SetParSensor(stsAddress09, sensor6cm); sensorParSet->SetParSensor(stsAddress10, sensor6cm); sensorParSet->SetParSensor(stsAddress11, sensor6cm); - - // auto *setup = CbmStsSetup::Instance(); - // setup->Init(); // reuse setup from global setup file } - else if (fConfig.setupType == Setup::mCBM2024) { + else if (fConfig.setupType == Setup::mCBM2024_03 || fConfig.setupType == Setup::mCBM2024_05) { uint32_t addr01 = 0x10008012; uint32_t addr02 = 0x10018012; uint32_t addr03 = 0x10008412; @@ -241,11 +245,6 @@ void CbmOnlineParWrite::AddSts() sensorParSet->SetParSensor(addr10, sensor6cm); sensorParSet->SetParSensor(addr11, sensor6cm); sensorParSet->SetParSensor(addr00, sensor6cm); - - // auto *setup = CbmStsSetup::Instance(); - // HACK: wrong geometry in global setup file - // setup->Init("/home/weiglhofer/cbm/cbmroot/geometry/sts/sts_v24b_mcbm.geo.root"); - // setup->Init(); } else { throw std::runtime_error("STS: Unknown setup type"); @@ -289,14 +288,13 @@ void CbmOnlineParWrite::Run(const Config& config) // ----- In- and output file names ------------------------------------ // --- Load the geometry setup ---- - // This is currently only required by the TRD (parameters) - cbm::mcbm::ToForceLibLoad dummy; /// Needed to trigger loading of the library as no fct dict in ROOT6 and CLING TString geoSetupTag = ""; try { uint64_t runId = -1; switch (fConfig.setupType) { case Setup::mCBM2022: runId = 2391; break; - case Setup::mCBM2024: runId = 2918; break; + case Setup::mCBM2024_03: runId = 2724; break; + case Setup::mCBM2024_05: runId = 2918; break; default: throw std::runtime_error("Unknown setup type"); } geoSetupTag = cbm::mcbm::GetSetupFromRunId(runId); @@ -306,6 +304,8 @@ void CbmOnlineParWrite::Run(const Config& config) return; } + LOG(info) << "Using geometry setup: " << geoSetupTag; + TString geoFile = fSrcDir + "/macro/mcbm/data/" + geoSetupTag + ".geo.root"; fSetup = CbmSetup::Instance(); fSetup->LoadSetup(geoSetupTag);