diff --git a/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.cxx b/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.cxx
index 44c12f519ca0bcbbf5b6f1dc0ad2a4c15f022db7..ffa8efd019498e87e006900a4acbeaaab89a6035 100644
--- a/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.cxx
@@ -39,6 +39,14 @@ void CbmRecEventHeaderConverter::Init()
RecEventHeaderBranch.AddField<float>("end_time", "End time of the event, ns");
RecEventHeaderBranch.AddField<float>("match_weight", "");
+ ivtx_chi2_ = RecEventHeaderBranch.GetFieldId("vtx_chi2");
+ iEpsd_ = RecEventHeaderBranch.GetFieldId("Epsd");
+ iM_ = RecEventHeaderBranch.GetFieldId("M");
+ ievt_id_ = RecEventHeaderBranch.GetFieldId("evt_id");
+ istart_time_ = RecEventHeaderBranch.GetFieldId("start_time");
+ iend_time_ = RecEventHeaderBranch.GetFieldId("end_time");
+ imatch_weight_ = RecEventHeaderBranch.GetFieldId("match_weight");
+
auto* man = AnalysisTree::TaskManager::GetInstance();
man->AddBranch(rec_event_header_, RecEventHeaderBranch);
rec_event_header_->Init(RecEventHeaderBranch);
@@ -54,12 +62,11 @@ void CbmRecEventHeaderConverter::ProcessData(CbmEvent* event)
if (!cbm_prim_vertex_) { throw std::runtime_error("No fPrimVtx"); }
rec_event_header_->SetVertexPosition3({cbm_prim_vertex_->GetX(), cbm_prim_vertex_->GetY(), cbm_prim_vertex_->GetZ()});
- rec_event_header_->SetField(float(cbm_prim_vertex_->GetChi2() / cbm_prim_vertex_->GetNDF()),
- branch.GetFieldId("vtx_chi2"));
+ rec_event_header_->SetField(float(cbm_prim_vertex_->GetChi2() / cbm_prim_vertex_->GetNDF()), ivtx_chi2_);
const int n_sts_tracks = event ? event->GetNofStsTracks() : cbm_sts_tracks_->GetEntries();
- rec_event_header_->SetField(n_sts_tracks, branch.GetFieldId("M"));
- rec_event_header_->SetField(GetPsdEnergy(event), branch.GetFieldId("Epsd"));
+ rec_event_header_->SetField(n_sts_tracks, iM_);
+ rec_event_header_->SetField(GetPsdEnergy(event), iEpsd_);
int evt_id;
float match_weight, start_time, end_time;
@@ -77,10 +84,10 @@ void CbmRecEventHeaderConverter::ProcessData(CbmEvent* event)
end_time = cbm_header_->GetT();
match_weight = 1.;
}
- rec_event_header_->SetField(evt_id, branch.GetFieldId("evt_id"));
- rec_event_header_->SetField(start_time, branch.GetFieldId("start_time"));
- rec_event_header_->SetField(end_time, branch.GetFieldId("end_time"));
- rec_event_header_->SetField(match_weight, branch.GetFieldId("match_weight"));
+ rec_event_header_->SetField(evt_id, ievt_id_);
+ rec_event_header_->SetField(start_time, istart_time_);
+ rec_event_header_->SetField(end_time, iend_time_);
+ rec_event_header_->SetField(match_weight, imatch_weight_);
}
float CbmRecEventHeaderConverter::GetPsdEnergy(CbmEvent* event)
diff --git a/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.h b/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.h
index bf1e5d20e315c15e99a37cc111856af560ce6f88..2276e1ec8e2b29ed7ee5f7aa64ef834b827b6c64 100644
--- a/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.h
+++ b/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.h
@@ -34,6 +34,14 @@ private:
FairMCEventHeader* cbm_header_ {nullptr}; ///< non-owning pointer
CbmVertex* cbm_prim_vertex_ {nullptr}; ///< non-owning pointer
+ int ivtx_chi2_ {AnalysisTree::UndefValueInt};
+ int iEpsd_ {AnalysisTree::UndefValueInt};
+ int iM_ {AnalysisTree::UndefValueInt};
+ int ievt_id_ {AnalysisTree::UndefValueInt};
+ int istart_time_ {AnalysisTree::UndefValueInt};
+ int iend_time_ {AnalysisTree::UndefValueInt};
+ int imatch_weight_ {AnalysisTree::UndefValueInt};
+
ClassDef(CbmRecEventHeaderConverter, 1)
};
diff --git a/analysis/common/analysis_tree_converter/CbmRichRingsConverter.cxx b/analysis/common/analysis_tree_converter/CbmRichRingsConverter.cxx
index 1e9dcc737deaa04359e909007104dac807a72cf7..35f5c997aa19b26b7183154227add67d2d3b9cdf 100644
--- a/analysis/common/analysis_tree_converter/CbmRichRingsConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmRichRingsConverter.cxx
@@ -39,6 +39,15 @@ void CbmRichRingsConverter::Init()
rich_branch.AddField<float>("radial_pos", "sqrt(x**2+abs(y-110)**2)");
rich_branch.AddField<float>("radial_angle", "(0||1||2)*pi +- atan( abs((+-100-y)/-x) )");
+ i_r_ = rich_branch.GetFieldId("radius");
+ i_n_hits_ = rich_branch.GetFieldId("n_hits");
+ i_axis_ = rich_branch.GetFieldId("axis_a");
+ i_center_ = rich_branch.GetFieldId("center_x");
+ i_chi2_ = rich_branch.GetFieldId("chi2_ov_ndf");
+ i_radial_angle_ = rich_branch.GetFieldId("radial_angle");
+ i_radial_pos_ = rich_branch.GetFieldId("radial_pos");
+ i_phi_ellipse_ = rich_branch.GetFieldId("phi_ellipse");
+
auto* man = AnalysisTree::TaskManager::GetInstance();
man->AddBranch(rich_rings_, rich_branch);
man->AddMatching(match_to_, out_branch_, vtx_tracks_2_rich_);
@@ -53,17 +62,8 @@ void CbmRichRingsConverter::ProcessData(CbmEvent* event)
auto* out_config_ = AnalysisTree::TaskManager::GetInstance()->GetConfig();
const auto& branch = out_config_->GetBranchConfig(out_branch_);
- const int i_r = branch.GetFieldId("radius");
- const int i_n_hits = branch.GetFieldId("n_hits");
- const int i_axis = branch.GetFieldId("axis_a");
- const int i_center = branch.GetFieldId("center_x");
- const int i_chi2 = branch.GetFieldId("chi2_ov_ndf");
- const int i_radial_angle = branch.GetFieldId("radial_angle");
- const int i_radial_pos = branch.GetFieldId("radial_pos");
- const int i_phi_ellipse = branch.GetFieldId("phi_ellipse");
-
const auto it = indexes_map_->find(match_to_);
- if (it == indexes_map_->end()) { throw std::runtime_error(match_to_ + " is not found to match with TOF hits"); }
+ if (it == indexes_map_->end()) { throw std::runtime_error(match_to_ + " is not found to match with RICH rings"); }
auto rec_tracks_map = it->second;
const int n_tracks = event ? event->GetNofData(ECbmDataType::kGlobalTrack) : cbm_global_tracks_->GetEntriesFast();
@@ -87,17 +87,17 @@ void CbmRichRingsConverter::ProcessData(CbmEvent* event)
auto& ring = rich_rings_->AddChannel(branch);
ring.SetPosition(rich_ring->GetCenterX(), rich_ring->GetCenterY(), 0.f);
- ring.SetField(int(rich_ring->GetNofHits()), i_n_hits);
- ring.SetField(int(rich_ring->GetNofHitsOnRing()), i_n_hits + 1);
- ring.SetField(float(rich_ring->GetAaxis()), i_axis);
- ring.SetField(float(rich_ring->GetBaxis()), i_axis + 1);
- ring.SetField(float(rich_ring->GetCenterX()), i_center);
- ring.SetField(float(rich_ring->GetCenterY()), i_center + 1);
- ring.SetField(float(rich_ring->GetRadius()), i_r);
- ring.SetField(float(rich_ring->GetNDF() > 0. ? rich_ring->GetChi2() / rich_ring->GetNDF() : -999.), i_chi2);
- ring.SetField(float(rich_ring->GetRadialAngle()), i_radial_angle);
- ring.SetField(float(rich_ring->GetRadialPosition()), i_radial_pos);
- ring.SetField(float(rich_ring->GetPhi()), i_phi_ellipse);
+ ring.SetField(int(rich_ring->GetNofHits()), i_n_hits_);
+ ring.SetField(int(rich_ring->GetNofHitsOnRing()), i_n_hits_ + 1);
+ ring.SetField(float(rich_ring->GetAaxis()), i_axis_);
+ ring.SetField(float(rich_ring->GetBaxis()), i_axis_ + 1);
+ ring.SetField(float(rich_ring->GetCenterX()), i_center_);
+ ring.SetField(float(rich_ring->GetCenterY()), i_center_ + 1);
+ ring.SetField(float(rich_ring->GetRadius()), i_r_);
+ ring.SetField(float(rich_ring->GetNDF() > 0. ? rich_ring->GetChi2() / rich_ring->GetNDF() : -999.), i_chi2_);
+ ring.SetField(float(rich_ring->GetRadialAngle()), i_radial_angle_);
+ ring.SetField(float(rich_ring->GetRadialPosition()), i_radial_pos_);
+ ring.SetField(float(rich_ring->GetPhi()), i_phi_ellipse_);
if (rec_tracks_map.empty()) { continue; }
const Int_t stsTrackIndex = global_track->GetStsTrackIndex();
diff --git a/analysis/common/analysis_tree_converter/CbmRichRingsConverter.h b/analysis/common/analysis_tree_converter/CbmRichRingsConverter.h
index 5e6c22dd272e6f22a4f5f84ab4abaddaaf089d42..88d98658847ab1f44c64bed115c0c06a121d85a3 100644
--- a/analysis/common/analysis_tree_converter/CbmRichRingsConverter.h
+++ b/analysis/common/analysis_tree_converter/CbmRichRingsConverter.h
@@ -34,6 +34,15 @@ private:
AnalysisTree::HitDetector* rich_rings_ {nullptr};
AnalysisTree::Matching* vtx_tracks_2_rich_ {nullptr};
+ int i_r_ {AnalysisTree::UndefValueInt};
+ int i_n_hits_ {AnalysisTree::UndefValueInt};
+ int i_axis_ {AnalysisTree::UndefValueInt};
+ int i_center_ {AnalysisTree::UndefValueInt};
+ int i_chi2_ {AnalysisTree::UndefValueInt};
+ int i_radial_angle_ {AnalysisTree::UndefValueInt};
+ int i_radial_pos_ {AnalysisTree::UndefValueInt};
+ int i_phi_ellipse_ {AnalysisTree::UndefValueInt};
+
ClassDef(CbmRichRingsConverter, 1)
};
diff --git a/analysis/common/analysis_tree_converter/CbmSimEventHeaderConverter.cxx b/analysis/common/analysis_tree_converter/CbmSimEventHeaderConverter.cxx
index a62f2d2254dc645fa2958770eedf86ef21aac5b7..a244b01467e9d1473686303717e3b296c901f5f3 100644
--- a/analysis/common/analysis_tree_converter/CbmSimEventHeaderConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmSimEventHeaderConverter.cxx
@@ -38,6 +38,13 @@ void CbmSimEventHeaderConverter::Init()
SimEventHeaderBranch.AddField<int>("run_id", "run identifier");
SimEventHeaderBranch.AddField<int>("event_id", "event identifier");
+ ipsi_RP_ = SimEventHeaderBranch.GetFieldId("psi_RP");
+ ib_ = SimEventHeaderBranch.GetFieldId("b");
+ istart_time_ = SimEventHeaderBranch.GetFieldId("start_time");
+ iend_time_ = SimEventHeaderBranch.GetFieldId("end_time");
+ irun_id_ = SimEventHeaderBranch.GetFieldId("run_id");
+ ievent_id_ = SimEventHeaderBranch.GetFieldId("event_id");
+
auto* man = AnalysisTree::TaskManager::GetInstance();
man->AddBranch(sim_event_header_, SimEventHeaderBranch);
sim_event_header_->Init(SimEventHeaderBranch);
@@ -68,14 +75,14 @@ void CbmSimEventHeaderConverter::ProcessData(CbmEvent* event)
TVector3 pos {cbm_header->GetX(), cbm_header->GetY(), cbm_header->GetZ()};
sim_event_header_->SetVertexPosition3(pos);
- sim_event_header_->SetField(float(cbm_header->GetRotZ()), branch.GetFieldId("psi_RP"));
- sim_event_header_->SetField(float(cbm_header->GetB()), branch.GetFieldId("b"));
- sim_event_header_->SetField(int(cbm_header->GetEventID()), branch.GetFieldId("event_id"));
- sim_event_header_->SetField(int(cbm_header->GetRunID()), branch.GetFieldId("run_id"));
+ sim_event_header_->SetField(float(cbm_header->GetRotZ()), ipsi_RP_);
+ sim_event_header_->SetField(float(cbm_header->GetB()), ib_);
+ sim_event_header_->SetField(int(cbm_header->GetEventID()), ievent_id_);
+ sim_event_header_->SetField(int(cbm_header->GetRunID()), irun_id_);
if (event) {
LOG(info) << "TIME: " << event->GetStartTime() << " " << event->GetEndTime();
- sim_event_header_->SetField(float(event->GetStartTime()), branch.GetFieldId("start_time"));
- sim_event_header_->SetField(float(event->GetEndTime()), branch.GetFieldId("end_time"));
+ sim_event_header_->SetField(float(event->GetStartTime()), istart_time_);
+ sim_event_header_->SetField(float(event->GetEndTime()), iend_time_);
}
}
diff --git a/analysis/common/analysis_tree_converter/CbmSimEventHeaderConverter.h b/analysis/common/analysis_tree_converter/CbmSimEventHeaderConverter.h
index f994f0e663f05550c3c9ab59dd5d5b686af39aa1..7061742bdaa005f30e8272dd6b9fa2602c66d9e3 100644
--- a/analysis/common/analysis_tree_converter/CbmSimEventHeaderConverter.h
+++ b/analysis/common/analysis_tree_converter/CbmSimEventHeaderConverter.h
@@ -30,6 +30,13 @@ private:
CbmMCDataManager* cbm_mc_manager_ {nullptr};
CbmMCDataObject* cbm_header_obj_ {nullptr};
+ int ipsi_RP_ {AnalysisTree::UndefValueInt};
+ int ib_ {AnalysisTree::UndefValueInt};
+ int istart_time_ {AnalysisTree::UndefValueInt};
+ int iend_time_ {AnalysisTree::UndefValueInt};
+ int irun_id_ {AnalysisTree::UndefValueInt};
+ int ievent_id_ {AnalysisTree::UndefValueInt};
+
ClassDef(CbmSimEventHeaderConverter, 1)
};
diff --git a/analysis/common/analysis_tree_converter/CbmSimTracksConverter.cxx b/analysis/common/analysis_tree_converter/CbmSimTracksConverter.cxx
index f3e24e37ce322596e5355bf691e58cfd372f57c6..9d130fa47986cc9afd74f9c29093b8b7a0cdc635 100644
--- a/analysis/common/analysis_tree_converter/CbmSimTracksConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmSimTracksConverter.cxx
@@ -80,6 +80,12 @@ void CbmSimTracksConverter::Init()
sim_particles_branch.AddFields<float>({"start_x", "start_y", "start_z"}, "Start position, cm");
sim_particles_branch.AddField<float>("start_t", "t freezout coordinate fm/c");
+ imother_id_ = sim_particles_branch.GetFieldId("mother_id");
+ igeant_id_ = sim_particles_branch.GetFieldId("geant_process_id");
+ in_hits_ = sim_particles_branch.GetFieldId("n_hits_mvd");
+ icbm_id_ = sim_particles_branch.GetFieldId("cbmroot_id");
+ istart_x_ = sim_particles_branch.GetFieldId("start_x");
+
auto* man = AnalysisTree::TaskManager::GetInstance();
man->AddBranch(sim_tracks_, sim_particles_branch);
}
@@ -120,11 +126,6 @@ void CbmSimTracksConverter::ProcessData(CbmEvent* event)
LOG(warn) << "No MC tracks!";
return;
}
- const int imother_id = branch.GetFieldId("mother_id");
- const int igeant_id = branch.GetFieldId("geant_process_id");
- const int in_hits = branch.GetFieldId("n_hits_mvd");
- const int icbm_id = branch.GetFieldId("cbmroot_id");
- const int istart_x = branch.GetFieldId("start_x");
sim_tracks_->Reserve(nMcTracks);
@@ -143,17 +144,17 @@ void CbmSimTracksConverter::ProcessData(CbmEvent* event)
track.SetMomentum(mctrack->GetPx(), mctrack->GetPy(), mctrack->GetPz());
track.SetMass(float(mctrack->GetMass()));
track.SetPid(int(mctrack->GetPdgCode()));
- track.SetField(int(mctrack->GetGeantProcessId()), igeant_id);
- track.SetField(int(mctrack->GetNPoints(ECbmModuleId::kMvd)), in_hits);
- track.SetField(int(mctrack->GetNPoints(ECbmModuleId::kSts)), in_hits + 1);
- track.SetField(int(mctrack->GetNPoints(ECbmModuleId::kTrd)), in_hits + 2);
- track.SetField(int(mctrack->GetUniqueID()), icbm_id);
+ track.SetField(int(mctrack->GetGeantProcessId()), igeant_id_);
+ track.SetField(int(mctrack->GetNPoints(ECbmModuleId::kMvd)), in_hits_);
+ track.SetField(int(mctrack->GetNPoints(ECbmModuleId::kSts)), in_hits_ + 1);
+ track.SetField(int(mctrack->GetNPoints(ECbmModuleId::kTrd)), in_hits_ + 2);
+ track.SetField(int(mctrack->GetUniqueID()), icbm_id_);
if (mctrack->GetMotherId() >= 0) { // secondary
- track.SetField(float(mctrack->GetStartX() - cbm_header_->GetX()), istart_x);
- track.SetField(float(mctrack->GetStartY() - cbm_header_->GetY()), istart_x + 1);
- track.SetField(float(mctrack->GetStartZ() - cbm_header_->GetZ()), istart_x + 2);
- track.SetField(float(nsTofmc * (mctrack->GetStartT() - cbm_header_->GetT())), istart_x + 3);
+ track.SetField(float(mctrack->GetStartX() - cbm_header_->GetX()), istart_x_);
+ track.SetField(float(mctrack->GetStartY() - cbm_header_->GetY()), istart_x_ + 1);
+ track.SetField(float(mctrack->GetStartZ() - cbm_header_->GetZ()), istart_x_ + 2);
+ track.SetField(float(nsTofmc * (mctrack->GetStartT() - cbm_header_->GetT())), istart_x_ + 3);
}
else { // primary
if (use_unigen_ && trackIndex < unigen_event_->GetNpa()) {
@@ -161,27 +162,27 @@ void CbmSimTracksConverter::ProcessData(CbmEvent* event)
TLorentzVector boostedX = p->GetPosition();
boostedX.Boost(0, 0, -beta_cm_);
boostedX.RotateZ(delta_phi);
- track.SetField(float(boostedX.X() * 1e-13), istart_x);
- track.SetField(float(boostedX.Y() * 1e-13), istart_x + 1);
- track.SetField(float(boostedX.Z() * 1e-13), istart_x + 2);
- track.SetField(float(boostedX.T()), istart_x + 3);
+ track.SetField(float(boostedX.X() * 1e-13), istart_x_);
+ track.SetField(float(boostedX.Y() * 1e-13), istart_x_ + 1);
+ track.SetField(float(boostedX.Z() * 1e-13), istart_x_ + 2);
+ track.SetField(float(boostedX.T()), istart_x_ + 3);
}
else {
- track.SetField(0.f, istart_x);
- track.SetField(0.f, istart_x + 1);
- track.SetField(0.f, istart_x + 2);
- track.SetField(0.f, istart_x + 3);
+ track.SetField(0.f, istart_x_);
+ track.SetField(0.f, istart_x_ + 1);
+ track.SetField(0.f, istart_x_ + 2);
+ track.SetField(0.f, istart_x_ + 3);
}
}
// mother id should < than track id, so we can do it here
- if (mctrack->GetMotherId() == -1) { track.SetField(int(-1), imother_id); }
+ if (mctrack->GetMotherId() == -1) { track.SetField(int(-1), imother_id_); }
else {
auto p = out_indexes_map_.find(mctrack->GetMotherId());
if (p == out_indexes_map_.end()) // match is not found
- track.SetField(int(-999), imother_id);
+ track.SetField(int(-999), imother_id_);
else {
- track.SetField(int(p->second), imother_id);
+ track.SetField(int(p->second), imother_id_);
}
}
}
diff --git a/analysis/common/analysis_tree_converter/CbmSimTracksConverter.h b/analysis/common/analysis_tree_converter/CbmSimTracksConverter.h
index 1f27dbf76bb8fcbbc0123396367a4dc0391ca81e..97adcaab3ba6a96fe1c2d4c40be8d395d566c925 100644
--- a/analysis/common/analysis_tree_converter/CbmSimTracksConverter.h
+++ b/analysis/common/analysis_tree_converter/CbmSimTracksConverter.h
@@ -55,6 +55,12 @@ private:
Double_t beta_cm_ {0}; ///< CM velocity in the lab frame
Bool_t use_unigen_ {false};
+ int imother_id_ {AnalysisTree::UndefValueInt};
+ int igeant_id_ {AnalysisTree::UndefValueInt};
+ int in_hits_ {AnalysisTree::UndefValueInt};
+ int icbm_id_ {AnalysisTree::UndefValueInt};
+ int istart_x_ {AnalysisTree::UndefValueInt};
+
ClassDef(CbmSimTracksConverter, 1)
};
diff --git a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx
index 719b634438521665dd23c96cc6c005f2bcd46449..6f7a3f180ac3e5c88dad966d6f3274c17b143c7e 100644
--- a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx
@@ -72,6 +72,17 @@ void CbmStsTracksConverter::Init()
vtx_tracks_config.AddField<int>("nhits", "number of hits (total MVD+STS)");
vtx_tracks_config.AddField<int>("nhits_mvd", "number of hits in MVD");
vtx_tracks_config.AddField<float>("match_weight", "true over all hits ratio for a matched MC-track");
+ vtx_tracks_config.AddField<float>("dE_over_dx");
+
+ iq_ = vtx_tracks_config.GetFieldId("q");
+ indf_ = vtx_tracks_config.GetFieldId("ndf");
+ ichi2_ = vtx_tracks_config.GetFieldId("chi2");
+ inhits_ = vtx_tracks_config.GetFieldId("nhits");
+ inhits_mvd_ = vtx_tracks_config.GetFieldId("nhits_mvd");
+ idcax_ = vtx_tracks_config.GetFieldId("dcax");
+ ivtx_chi2_ = vtx_tracks_config.GetFieldId("vtx_chi2");
+ ide_dx_ = vtx_tracks_config.GetFieldId("dE_over_dx");
+ imatch_weight_ = vtx_tracks_config.GetFieldId("match_weight");
if (is_write_kfinfo_) {
vtx_tracks_config.AddFields<float>({"x", "y", "z", "tx", "ty", "qp"}, "track parameters");
@@ -81,8 +92,6 @@ void CbmStsTracksConverter::Init()
"cov11", "cov12", "cov13", "cov14", "cov15"},
"covarience matrix");
- vtx_tracks_config.AddField<float>("dE_over_dx");
-
vtx_tracks_config.AddField<int>("mother_pdg", "PDG code of mother particle");
vtx_tracks_config.AddField<int>("mc_pdg", "MC-true PDG code");
vtx_tracks_config.AddField<bool>("pass_cuts", "ask Oleksii");
@@ -131,15 +140,6 @@ void CbmStsTracksConverter::ReadVertexTracks(CbmEvent* event)
auto* out_config_ = AnalysisTree::TaskManager::GetInstance()->GetConfig();
const auto& branch = out_config_->GetBranchConfig(out_branch_);
- const int iq = branch.GetFieldId("q");
- const int indf = branch.GetFieldId("ndf");
- const int ichi2 = branch.GetFieldId("chi2");
- const int inhits = branch.GetFieldId("nhits");
- const int inhits_mvd = branch.GetFieldId("nhits_mvd");
- const int idcax = branch.GetFieldId("dcax");
- const int ivtx_chi2 = branch.GetFieldId("vtx_chi2");
- const int ide_dx = branch.GetFieldId("dE_over_dx");
-
const int n_sts_tracks = event ? event->GetNofStsTracks() : cbm_sts_tracks_->GetEntries();
if (n_sts_tracks <= 0) {
LOG(warn) << "No STS tracks!";
@@ -164,16 +164,16 @@ void CbmStsTracksConverter::ReadVertexTracks(CbmEvent* event)
const Int_t q = trackParamFirst->GetQp() > 0 ? 1 : -1;
track.SetMomentum3(momRec);
- track.SetField(int(q), iq);
- track.SetField(int(sts_track->GetNDF()), indf);
- track.SetField(float(sts_track->GetChiSq()), ichi2);
- track.SetField(int(sts_track->GetNofHits()), inhits);
- track.SetField(float(trackParamFirst->GetX() - cbm_prim_vertex_->GetX()), idcax);
- track.SetField(float(trackParamFirst->GetY() - cbm_prim_vertex_->GetY()), idcax + 1);
- track.SetField(float(trackParamFirst->GetZ() - cbm_prim_vertex_->GetZ()), idcax + 2);
- track.SetField(int(sts_track->GetNofMvdHits()), inhits_mvd);
- track.SetField(float(chi2_vertex), ivtx_chi2);
- track.SetField(float(sts_track->GetELoss()), ide_dx);
+ track.SetField(int(q), iq_);
+ track.SetField(int(sts_track->GetNDF()), indf_);
+ track.SetField(float(sts_track->GetChiSq()), ichi2_);
+ track.SetField(int(sts_track->GetNofHits()), inhits_);
+ track.SetField(float(trackParamFirst->GetX() - cbm_prim_vertex_->GetX()), idcax_);
+ track.SetField(float(trackParamFirst->GetY() - cbm_prim_vertex_->GetY()), idcax_ + 1);
+ track.SetField(float(trackParamFirst->GetZ() - cbm_prim_vertex_->GetZ()), idcax_ + 2);
+ track.SetField(int(sts_track->GetNofMvdHits()), inhits_mvd_);
+ track.SetField(float(chi2_vertex), ivtx_chi2_);
+ track.SetField(float(sts_track->GetELoss()), ide_dx_);
out_indexes_map_.insert(std::make_pair(track_index, track.GetId()));
@@ -253,7 +253,6 @@ void CbmStsTracksConverter::MapTracks(CbmEvent* event)
else {
event_id = FairRootManager::Instance()->GetEntryNr();
}
- auto weight_id = config_->GetBranchConfig(out_branch_).GetFieldId("match_weight");
for (const auto& track_id : out_indexes_map_) {
const int cbm_id = track_id.first;
@@ -278,7 +277,7 @@ void CbmStsTracksConverter::MapTracks(CbmEvent* event)
// LOG(info) << match->GetTrueOverAllHitsRatio();
- track.SetField(float(match->GetTrueOverAllHitsRatio()), weight_id);
+ track.SetField(float(match->GetTrueOverAllHitsRatio()), imatch_weight_);
vtx_tracks_2_sim_->AddMatch(out_id, p->second);
}
}
diff --git a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.h b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.h
index 98b5400bf49a829518e2d994220fe0c43d13e2d6..9370a9479807a4929103243a79026183ed2f5e39 100644
--- a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.h
+++ b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.h
@@ -63,12 +63,22 @@ private:
bool is_write_kfinfo_ {true};
bool is_reproduce_cbmkfpf_ {true};
- int ipar_ {-1};
- int imf_ {-1};
- int icov_ {-1};
- int imc_pdg_ {-1};
- int imother_pdg_ {-1};
- int ipasscuts_ {-1};
+ int iq_ {AnalysisTree::UndefValueInt};
+ int indf_ {AnalysisTree::UndefValueInt};
+ int ichi2_ {AnalysisTree::UndefValueInt};
+ int inhits_ {AnalysisTree::UndefValueInt};
+ int inhits_mvd_ {AnalysisTree::UndefValueInt};
+ int idcax_ {AnalysisTree::UndefValueInt};
+ int ivtx_chi2_ {AnalysisTree::UndefValueInt};
+ int ide_dx_ {AnalysisTree::UndefValueInt};
+ int imatch_weight_ {AnalysisTree::UndefValueInt};
+
+ int ipar_ {AnalysisTree::UndefValueInt};
+ int imf_ {AnalysisTree::UndefValueInt};
+ int icov_ {AnalysisTree::UndefValueInt};
+ int imc_pdg_ {AnalysisTree::UndefValueInt};
+ int imother_pdg_ {AnalysisTree::UndefValueInt};
+ int ipasscuts_ {AnalysisTree::UndefValueInt};
ClassDef(CbmStsTracksConverter, 1)
};
diff --git a/analysis/common/analysis_tree_converter/CbmTofHitsConverter.cxx b/analysis/common/analysis_tree_converter/CbmTofHitsConverter.cxx
index 1a373d987bc49585d36ea5b7abecc0d748ad34d1..5426a09dbac0f8b4afb765d2592ae18b95c81e9f 100644
--- a/analysis/common/analysis_tree_converter/CbmTofHitsConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmTofHitsConverter.cxx
@@ -45,7 +45,12 @@ void CbmTofHitsConverter::Init()
tof_branch.AddField<float>("t", "ps(?), Measured time ");
tof_branch.AddField<float>("qp_tof", "charge * momentum extrapoleted to TOF");
tof_branch.AddFields<float>({"dx", "dy", "dz"}, "Distance between TOF hit and extrapolated global track, cm");
- tof_branch.AddField<int>("mc_pdg", "MC-true PDG code of particle with highest contribution to TOF hit");
+
+ i_mass2_ = tof_branch.GetFieldId("mass2");
+ i_qp_ = tof_branch.GetFieldId("qp_tof");
+ i_dx_ = tof_branch.GetFieldId("dx");
+ i_t_ = tof_branch.GetFieldId("t");
+ i_l_ = tof_branch.GetFieldId("l");
auto* man = AnalysisTree::TaskManager::GetInstance();
man->AddBranch(tof_hits_, tof_branch);
@@ -76,12 +81,6 @@ void CbmTofHitsConverter::ProcessData(CbmEvent* event)
auto* out_config_ = AnalysisTree::TaskManager::GetInstance()->GetConfig();
const auto& branch = out_config_->GetBranchConfig(out_branch_);
- const int i_mass2 = branch.GetFieldId("mass2");
- const int i_qp = branch.GetFieldId("qp_tof");
- const int i_dx = branch.GetFieldId("dx");
- const int i_t = branch.GetFieldId("t");
- const int i_l = branch.GetFieldId("l");
-
auto rec_tracks_map = GetMatchMap(match_to_);
auto sim_tracks_map = GetMatchMap(mc_tracks_);
@@ -133,13 +132,13 @@ void CbmTofHitsConverter::ProcessData(CbmEvent* event)
auto& hit = tof_hits_->AddChannel(branch);
hit.SetPosition(hitX, hitY, hitZ);
hit.SetSignal(time);
- hit.SetField(m2, i_mass2);
- hit.SetField(float(q * p_tof.Mag()), i_qp);
- hit.SetField(float(param_last.GetX() - hitX), i_dx);
- hit.SetField(float(param_last.GetY() - hitY), i_dx + 1);
- hit.SetField(float(param_last.GetZ() - hitZ), i_dx + 2);
- hit.SetField(l, i_l);
- hit.SetField(time, i_t);
+ hit.SetField(m2, i_mass2_);
+ hit.SetField(float(q * p_tof.Mag()), i_qp_);
+ hit.SetField(float(param_last.GetX() - hitX), i_dx_);
+ hit.SetField(float(param_last.GetY() - hitY), i_dx_ + 1);
+ hit.SetField(float(param_last.GetZ() - hitZ), i_dx_ + 2);
+ hit.SetField(l, i_l_);
+ hit.SetField(time, i_t_);
if (rec_tracks_map.empty()) { continue; }
const Int_t stsTrackIndex = globalTrack->GetStsTrackIndex();
diff --git a/analysis/common/analysis_tree_converter/CbmTofHitsConverter.h b/analysis/common/analysis_tree_converter/CbmTofHitsConverter.h
index cd7dd733e388eb45a063ebb22722f3fa71761b9e..d55cb66d2a66bc9ba726565bbfc5777670aaffa1 100644
--- a/analysis/common/analysis_tree_converter/CbmTofHitsConverter.h
+++ b/analysis/common/analysis_tree_converter/CbmTofHitsConverter.h
@@ -56,6 +56,12 @@ private:
AnalysisTree::Matching* vtx_tracks_2_tof_ {nullptr};
AnalysisTree::Matching* tof_hits_2_mc_tracks_ {nullptr};
+ int i_mass2_ {AnalysisTree::UndefValueInt};
+ int i_qp_ {AnalysisTree::UndefValueInt};
+ int i_dx_ {AnalysisTree::UndefValueInt};
+ int i_t_ {AnalysisTree::UndefValueInt};
+ int i_l_ {AnalysisTree::UndefValueInt};
+
ClassDef(CbmTofHitsConverter, 1)
};
diff --git a/analysis/common/analysis_tree_converter/CbmTrdTracksConverter.cxx b/analysis/common/analysis_tree_converter/CbmTrdTracksConverter.cxx
index a29ea1c8a6038b37ffe5910c4a6a647ae1c71584..ebe5ee75293823dd6557eaaa282504c80a2a3c34 100644
--- a/analysis/common/analysis_tree_converter/CbmTrdTracksConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmTrdTracksConverter.cxx
@@ -41,6 +41,12 @@ void CbmTrdTracksConverter::Init()
trd_branch.AddFields<float>({"pT_out", "p_out"}, "Momentum at last point (?)");
trd_branch.AddField<int>("n_hits", "Number of hits");
+ i_e_loss_i_ = trd_branch.GetFieldId("energy_loss_0");
+ i_pid_like_ = trd_branch.GetFieldId("pid_like_e");
+ i_chi2_ov_ndf_ = trd_branch.GetFieldId("chi2_ov_ndf");
+ i_pT_out_ = trd_branch.GetFieldId("pT_out");
+ i_n_hits_ = trd_branch.GetFieldId("n_hits");
+
auto* man = AnalysisTree::TaskManager::GetInstance();
man->AddBranch(trd_tracks_, trd_branch);
man->AddMatching(match_to_, out_branch_, vtx_tracks_2_trd_);
@@ -55,14 +61,8 @@ void CbmTrdTracksConverter::ProcessData(CbmEvent* event)
auto* out_config_ = AnalysisTree::TaskManager::GetInstance()->GetConfig();
const auto& branch = out_config_->GetBranchConfig(out_branch_);
- const int i_e_loss_i = branch.GetFieldId("energy_loss_0");
- const int i_pid_like = branch.GetFieldId("pid_like_e");
- const int i_chi2_ov_ndf = branch.GetFieldId("chi2_ov_ndf");
- const int i_pT_out = branch.GetFieldId("pT_out");
- const int i_n_hits = branch.GetFieldId("n_hits");
-
const auto it = indexes_map_->find(match_to_);
- if (it == indexes_map_->end()) { throw std::runtime_error(match_to_ + " is not found to match with TOF hits"); }
+ if (it == indexes_map_->end()) { throw std::runtime_error(match_to_ + " is not found to match with TRD tracks"); }
auto rec_tracks_map = it->second;
const int n_tracks = event ? event->GetNofData(ECbmDataType::kGlobalTrack) : cbm_global_tracks_->GetEntriesFast();
@@ -92,21 +92,21 @@ void CbmTrdTracksConverter::ProcessData(CbmEvent* event)
trd_track->GetParamLast()->Momentum(mom_last);
track.SetMomentum3(mom);
- track.SetField(int(trd_track->GetNofHits()), i_n_hits);
+ track.SetField(int(trd_track->GetNofHits()), i_n_hits_);
- track.SetField(float(trd_track->GetPidLikeEL()), i_pid_like);
- track.SetField(float(trd_track->GetPidLikePI()), i_pid_like + 1);
- track.SetField(float(trd_track->GetPidLikeKA()), i_pid_like + 2);
- track.SetField(float(trd_track->GetPidLikePR()), i_pid_like + 3);
+ track.SetField(float(trd_track->GetPidLikeEL()), i_pid_like_);
+ track.SetField(float(trd_track->GetPidLikePI()), i_pid_like_ + 1);
+ track.SetField(float(trd_track->GetPidLikeKA()), i_pid_like_ + 2);
+ track.SetField(float(trd_track->GetPidLikePR()), i_pid_like_ + 3);
track.SetField(float(trd_track->GetNDF() > 0. ? trd_track->GetChiSq() / trd_track->GetNDF() : -999.),
- i_chi2_ov_ndf);
+ i_chi2_ov_ndf_);
- track.SetField(float(mom_last.Pt()), i_pT_out);
- track.SetField(float(mom_last.Mag()), i_pT_out + 1);
+ track.SetField(float(mom_last.Pt()), i_pT_out_);
+ track.SetField(float(mom_last.Mag()), i_pT_out_ + 1);
for (int i = 0; i < 4; ++i) {
- track.SetField(0.f, i_e_loss_i + i);
+ track.SetField(0.f, i_e_loss_i_ + i);
}
for (Int_t ihit = 0; ihit < trd_track->GetNofHits(); ihit++) {
@@ -114,7 +114,7 @@ void CbmTrdTracksConverter::ProcessData(CbmEvent* event)
auto* hit = (CbmTrdHit*) cbm_trd_hits_->At(idx);
if (hit) {
// std::cout << hit->GetELoss()*1e6 << " " << hit->GetPlaneId() << std::endl;
- track.SetField(float(hit->GetELoss() * 1e6), i_e_loss_i + hit->GetPlaneId());
+ track.SetField(float(hit->GetELoss() * 1e6), i_e_loss_i_ + hit->GetPlaneId());
}
}
diff --git a/analysis/common/analysis_tree_converter/CbmTrdTracksConverter.h b/analysis/common/analysis_tree_converter/CbmTrdTracksConverter.h
index 4a54d052cb789dd1f2b1cbad30f13f2b95fa8c5d..435d2e079b423d0f6677c316f8543f3340fb4c64 100644
--- a/analysis/common/analysis_tree_converter/CbmTrdTracksConverter.h
+++ b/analysis/common/analysis_tree_converter/CbmTrdTracksConverter.h
@@ -38,6 +38,12 @@ private:
AnalysisTree::TrackDetector* trd_tracks_ {nullptr};
AnalysisTree::Matching* vtx_tracks_2_trd_ {nullptr};
+ int i_e_loss_i_ {AnalysisTree::UndefValueInt};
+ int i_pid_like_ {AnalysisTree::UndefValueInt};
+ int i_chi2_ov_ndf_ {AnalysisTree::UndefValueInt};
+ int i_pT_out_ {AnalysisTree::UndefValueInt};
+ int i_n_hits_ {AnalysisTree::UndefValueInt};
+
ClassDef(CbmTrdTracksConverter, 1)
};