From 9adde218d0f6a57734ee2c3f3f51a11991acbac9 Mon Sep 17 00:00:00 2001 From: Frederic Julian Linz <f.linz@gsi.de> Date: Tue, 23 Apr 2024 00:58:43 +0000 Subject: [PATCH] Add information to AT converter for multi-stream input --- .../CbmMatchEvents.cxx | 4 ++-- .../CbmRecEventHeaderConverter.cxx | 20 +++++++++++++------ .../CbmRecEventHeaderConverter.h | 1 + .../CbmStsTracksConverter.cxx | 2 -- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/analysis/common/analysis_tree_converter/CbmMatchEvents.cxx b/analysis/common/analysis_tree_converter/CbmMatchEvents.cxx index 77552434f5..f690e3ca4a 100644 --- a/analysis/common/analysis_tree_converter/CbmMatchEvents.cxx +++ b/analysis/common/analysis_tree_converter/CbmMatchEvents.cxx @@ -27,8 +27,8 @@ void CbmMatchEvents::ProcessData(CbmEvent* event) { if (!event) { throw std::runtime_error("No event to match"); } - LOG(info) << "Event: " << event->GetNumber() << " t_start " << event->GetStartTime() - << " Msts = " << event->GetNofStsTracks(); + LOG(info) << "Event: " << event->GetNumber() << " t_start = " << event->GetStartTime() + << " t_end = " << event->GetEndTime() << " Msts = " << event->GetNofStsTracks(); count_map_.clear(); diff --git a/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.cxx b/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.cxx index efe6df5e84..f7c9a2efd4 100644 --- a/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.cxx +++ b/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.cxx @@ -35,16 +35,18 @@ void CbmRecEventHeaderConverter::Init() RecEventHeaderBranch.AddField<float>("vtx_chi2", "primiry vertex fit chi^2/NDF"); RecEventHeaderBranch.AddField<float>("Epsd", "GeV, full energy deposit in PSD"); RecEventHeaderBranch.AddField<int>("M", "total multiplicity in STS(+MVD)"); + RecEventHeaderBranch.AddField<int>("nMCEvents", "Number of MC events that contributed"); RecEventHeaderBranch.AddField<int>("evt_id", "event identifier"); - RecEventHeaderBranch.AddField<float>("start_time", "Start time of the event, ns"); - RecEventHeaderBranch.AddField<float>("end_time", "End time of the event, ns"); - RecEventHeaderBranch.AddField<float>("match_weight", ""); + RecEventHeaderBranch.AddFields<float>({"start_time", "end_time"}, "Start and end time of the event, ns"); + RecEventHeaderBranch.AddField<float>("match_weight", + "Weight of matched event"); // TODO: Add info how it is calculated RecEventHeaderBranch.AddField<float>("T0", "Reconstructed T0, ns"); RecEventHeaderBranch.AddField<float>("tStartTS", "TS start time, ns"); ivtx_chi2_ = RecEventHeaderBranch.GetFieldId("vtx_chi2"); iEpsd_ = RecEventHeaderBranch.GetFieldId("Epsd"); iM_ = RecEventHeaderBranch.GetFieldId("M"); + iMCEvents_ = RecEventHeaderBranch.GetFieldId("nMCEvents"); ievt_id_ = RecEventHeaderBranch.GetFieldId("evt_id"); istart_time_ = RecEventHeaderBranch.GetFieldId("start_time"); iend_time_ = RecEventHeaderBranch.GetFieldId("end_time"); @@ -70,7 +72,7 @@ void CbmRecEventHeaderConverter::ProcessData(CbmEvent* event) rec_event_header_->SetField(n_sts_tracks, iM_); rec_event_header_->SetField(GetPsdEnergy(event), iEpsd_); - int evt_id; + int nMCEvents, evt_id; float match_weight, start_time, end_time, T0, tStartTS; if (event) { evt_id = event->GetUniqueID(); @@ -80,10 +82,14 @@ void CbmRecEventHeaderConverter::ProcessData(CbmEvent* event) tStartTS = fTimeSlice->GetStartTime(); - if (event->GetMatch() && event->GetMatch()->GetNofLinks() > 0) + if (event->GetMatch() && event->GetMatch()->GetNofLinks() > 0) { match_weight = float(event->GetMatch()->GetMatchedLink().GetWeight()); - else + nMCEvents = event->GetMatch()->GetNofLinks(); + } + else { match_weight = 0.; + nMCEvents = 0; + } } else { evt_id = cbm_header_->GetEventID(); @@ -92,6 +98,7 @@ void CbmRecEventHeaderConverter::ProcessData(CbmEvent* event) T0 = -999999.; tStartTS = -1.; match_weight = 1.; + nMCEvents = 1; } rec_event_header_->SetField(evt_id, ievt_id_); rec_event_header_->SetField(start_time, istart_time_); @@ -99,6 +106,7 @@ void CbmRecEventHeaderConverter::ProcessData(CbmEvent* event) rec_event_header_->SetField(T0, iT0_); rec_event_header_->SetField(tStartTS, iTStartTS_); rec_event_header_->SetField(match_weight, imatch_weight_); + rec_event_header_->SetField(nMCEvents, iMCEvents_); } float CbmRecEventHeaderConverter::GetPsdEnergy(CbmEvent* event) diff --git a/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.h b/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.h index 4a3fc3a351..cc4d053ca7 100644 --- a/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.h +++ b/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.h @@ -39,6 +39,7 @@ private: int ivtx_chi2_ {AnalysisTree::UndefValueInt}; int iEpsd_ {AnalysisTree::UndefValueInt}; int iM_ {AnalysisTree::UndefValueInt}; + int iMCEvents_{AnalysisTree::UndefValueInt}; int ievt_id_ {AnalysisTree::UndefValueInt}; int istart_time_ {AnalysisTree::UndefValueInt}; int iend_time_ {AnalysisTree::UndefValueInt}; diff --git a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx index eeadfa3dee..6a3e4371b2 100644 --- a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx +++ b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx @@ -277,8 +277,6 @@ void CbmStsTracksConverter::MapTracks(CbmEvent* event) if (p == sim_tracks_map.end()) // match is not found continue; - // LOG(info) << match->GetTrueOverAllHitsRatio(); - track.SetField(float(match->GetTrueOverAllHitsRatio()), imatch_weight_); vtx_tracks_2_sim_->AddMatch(out_id, p->second); } -- GitLab