64 {
65
67
68 const auto& cdcHitList = recoTrack.getSortedCDCHitList();
69 const RecoTrack* svdcdcRecoTrack = recoTrack.getRelated<RecoTrack>("SVDCDCRecoTracks");
70
71 if (not svdcdcRecoTrack) {
72 return;
73 }
74
75 m_variables.at(
m_prefix +
"InOutArmTimeDifference") =
static_cast<float>(recoTrack.getInOutArmTimeDifference());
76 m_variables.at(
m_prefix +
"InOutArmTimeDifferenceError") =
static_cast<float>(recoTrack.getInOutArmTimeDifferenceError());
77 m_variables.at(
m_prefix +
"inGoingArmTime") =
static_cast<float>(recoTrack.getIngoingArmTime());
78 m_variables.at(
m_prefix +
"inGoingArmTimeError") =
static_cast<float>(recoTrack.getIngoingArmTimeError());
79 m_variables.at(
m_prefix +
"outGoingArmTime") =
static_cast<float>(recoTrack.getOutgoingArmTime());
80 m_variables.at(
m_prefix +
"outGoingArmTimeError") =
static_cast<float>(recoTrack.getOutgoingArmTimeError());
81
82 if (cdcHitList.size() > 0) {
83 m_variables.at(
m_prefix +
"first_cdc_layer") =
static_cast<float>(cdcHitList.front()->getICLayer());
84 m_variables.at(
m_prefix +
"last_cdc_layer") =
static_cast<float>(cdcHitList.back()->getICLayer());
85 }
86
87 m_variables.at(
m_prefix +
"n_svd_hits") =
static_cast<float>(recoTrack.getNumberOfSVDHits());
88 m_variables.at(
m_prefix +
"n_cdc_hits") =
static_cast<float>(recoTrack.getNumberOfCDCHits());
89
90 const auto& svdcdcRecoTrackCovariance = svdcdcRecoTrack->getSeedCovariance();
91 const auto& svdcdcRecoTrackMomentum = svdcdcRecoTrack->getMomentumSeed();
92 const auto& svdcdcRecoTrackPosition = svdcdcRecoTrack->getPositionSeed();
93 const float svdcdcRecoTrackChargeSign = svdcdcRecoTrack->getChargeSeed() > 0 ? 1.0f : -1.0f;
95 const uint16_t svdcdcNDF = 0xffff;
96 const auto& svdcdcFitResult = TrackFitResult(svdcdcRecoTrackPosition, svdcdcRecoTrackMomentum, svdcdcRecoTrackCovariance,
97 svdcdcRecoTrackChargeSign,
Const::pion, 0, bFieldValue, 0, 0,
98 svdcdcNDF);
99
100 m_variables.at(
m_prefix +
"seed_pz_variance") =
static_cast<float>(svdcdcRecoTrackCovariance(5, 5));
101 m_variables.at(
m_prefix +
"seed_pz_estimate") =
static_cast<float>(svdcdcRecoTrackMomentum.Z());
102 m_variables.at(
m_prefix +
"seed_z_estimate") =
static_cast<float>(svdcdcRecoTrackPosition.Z());
103 m_variables.at(
m_prefix +
"seed_tan_lambda_estimate") =
static_cast<float>(svdcdcFitResult.getCotTheta());
104
105 m_variables.at(
m_prefix +
"seed_pt_estimate") =
static_cast<float>(svdcdcRecoTrackMomentum.Rho());
106 m_variables.at(
m_prefix +
"seed_x_estimate") =
static_cast<float>(svdcdcRecoTrackPosition.X());
107 m_variables.at(
m_prefix +
"seed_y_estimate") =
static_cast<float>(svdcdcRecoTrackPosition.Y());
108 m_variables.at(
m_prefix +
"seed_py_variance") =
static_cast<float>(svdcdcRecoTrackCovariance(4, 4));
109 m_variables.at(
m_prefix +
"seed_d0_estimate") =
static_cast<float>(svdcdcFitResult.getD0());
110 m_variables.at(
m_prefix +
"seed_omega_variance") =
static_cast<float>(svdcdcFitResult.getCov()[9]);
111 m_variables.at(
m_prefix +
"seed_tan_lambda_variance") =
static_cast<float>(svdcdcFitResult.getCov()[14]);
112 m_variables.at(
m_prefix +
"seed_z_variance") =
static_cast<float>(svdcdcRecoTrackCovariance(2, 2));
113
114 for (const auto* svdHit : recoTrack.getSVDHitList()) {
115 if (svdHit->getSensorID().getLayerNumber() == 3) {
116 m_variables.at(
m_prefix +
"svd_layer3_positionSigma") =
static_cast<float>(svdHit->getPositionSigma());
117 }
118 if (svdHit->getSensorID().getLayerNumber() == 6) {
119 m_variables.at(
m_prefix +
"svd_layer6_clsTime") =
static_cast<float>(svdHit->getClsTime());
120 }
121 }
122 }
static ROOT::Math::XYZVector getFieldInTesla(const ROOT::Math::XYZVector &pos)
return the magnetic field at a given position in Tesla.
static const ChargedStable pion
charged pion particle