Skip to content
Snippets Groups Projects
Commit 172082af authored by Sergei Zharko's avatar Sergei Zharko
Browse files

online: Adding BMON hit-finder to event reconstruction

parent 933f7d54
No related branches found
No related tags found
1 merge request!2000Lambda-selector in cbmreco (first iteration)
......@@ -212,21 +212,6 @@ void Reco::Init(const Options& opts)
fStsHitFinder->SetParameters(hitFinderPars);
}
// BMON Hitfinder
if (Opts().Has(fles::Subsystem::BMON) && Opts().Has(Step::LocalReco)) {
auto calibSetup = yaml::ReadFromFile<bmon::CalibrateSetup>(opts.ParamsDir() / parFiles.bmon.calibrate);
fBmonCalibrator = std::make_unique<bmon::Calibrate>(calibSetup);
auto hitfindSetup = yaml::ReadFromFile<bmon::HitfindSetup>(opts.ParamsDir() / parFiles.bmon.hitfinder);
fBmonHitFinder = std::make_unique<bmon::Hitfind>(hitfindSetup);
if (fQaManager != nullptr && Opts().Has(QaStep::RecoBmon)) {
fBmonHitFinderQa = std::make_unique<bmon::HitfindQa>(fQaManager, "BmonHitfindEvent");
fBmonHitFinderQa->InitParameters(calibSetup, hitfindSetup);
fBmonHitFinderQa->Init();
}
}
// TOF Hitfinder
if (Opts().Has(fles::Subsystem::TOF) && Opts().Has(Step::LocalReco)) {
auto calibSetup = yaml::ReadFromFile<tof::CalibrateSetup>(opts.ParamsDir() / parFiles.tof.calibrate);
......@@ -249,6 +234,7 @@ void Reco::Init(const Options& opts)
fbReconstructDigiEvents &= Opts().Has(fles::Subsystem::STS);
fbReconstructDigiEvents &= Opts().Has(fles::Subsystem::TRD);
fbReconstructDigiEvents &= Opts().Has(fles::Subsystem::TOF);
fbReconstructDigiEvents &= Opts().Has(fles::Subsystem::BMON);
}
// Tracking
......@@ -267,6 +253,18 @@ void Reco::Init(const Options& opts)
if (fbReconstructDigiEvents) {
fEvSelectingMonitor.Reset();
// BMON hit finding in event reconstruction
auto bmonCalSetup = yaml::ReadFromFile<bmon::CalibrateSetup>(opts.ParamsDir() / parFiles.bmon.calibrate);
auto bmonHitSetup = yaml::ReadFromFile<bmon::HitfindSetup>(opts.ParamsDir() / parFiles.bmon.hitfinder);
fBmonCalibrator = std::make_unique<bmon::Calibrate>(bmonCalSetup);
fBmonHitFinder = std::make_unique<bmon::Hitfind>(bmonHitSetup);
if (fQaManager != nullptr && Opts().Has(QaStep::RecoBmon)) {
fBmonHitFinderQa = std::make_unique<bmon::HitfindQa>(fQaManager, "BmonHitfindEvent");
fBmonHitFinderQa->InitParameters(bmonCalSetup, bmonHitSetup);
fBmonHitFinderQa->Init();
}
// Tracking in event reconstruction
if (fQaManager != nullptr && Opts().Has(QaStep::Tracking)) {
fTracking = std::make_unique<TrackingChain>(ECbmRecoMode::EventByEvent, fQaManager, "CaEvent");
}
......@@ -524,6 +522,19 @@ void Reco::PrintTimings(xpu::timings& timings)
bool Reco::ReconstructEvent(const DigiEvent& digiEvent)
{
RecoResults recoEvent;
//* BMON hit reconstruction
{
auto [calDigis, calMonitor] = (*fBmonCalibrator)(recoEvent.fBmon);
auto [hits, hitMonitor, digiIndices] = (*fBmonHitFinder)(calDigis);
if (fBmonHitFinderQa != nullptr) {
fBmonHitFinderQa->RegisterDigis(&calDigis);
fBmonHitFinderQa->RegisterHits(&hits);
fBmonHitFinderQa->RegisterDigiIndices(&digiIndices);
fBmonHitFinderQa->Exec();
}
recoEvent.bmonHits = std::move(hits);
}
//* STS hit reconstruction
{
fEvSelectingMonitor.StartTimer(evselect::ETimer::StsHitFinder);
......
......@@ -12,6 +12,7 @@
#include "DigiData.h"
#include "PartitionedSpan.h"
#include "PartitionedVector.h"
#include "bmon/Hit.h"
#include "ca/core/data/CaTrack.h"
#include "ca/core/utils/CaVector.h"
#include "sts/Cluster.h"
......@@ -41,6 +42,7 @@ namespace cbm::algo
PartitionedSpan<sts::Hit> stsHits;
PartitionedVector<tof::Hit> tofHits;
PartitionedVector<trd::Hit> trdHits;
PartitionedVector<bmon::Hit> bmonHits;
ca::Vector<ca::Track> tracks;
ca::Vector<std::vector<std::pair<uint32_t, uint32_t>>> trackStsHitIndices;
......
......@@ -59,5 +59,6 @@ namespace cbm::algo
private:
kfp::V0Finder fFinder; ///< Instance of the V0-finding algorithm
kfp::V0FinderMonitor fMonitorRun; ///< Monitor per run
uint32_t fBmonAddress; ///< Address of selected BMON
};
} // namespace cbm::algo
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment