64 {
65
66 setDefaultValues();
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;
94 const float bFieldValue = static_cast<float>(BFieldManager::getFieldInTesla(svdcdcRecoTrackPosition).Z());
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 }