18 using namespace IDPVM;
23 m_fracTRTExtensions_vs_eta{},
24 m_fracTRTExtensions_vs_pt{},
25 m_fracTRTExtensions_vs_mu{},
26 m_fracTRTExtensions_vs_nvertices{},
27 m_fracTRTExtensions_matched_vs_eta{},
28 m_fracTRTExtensions_matched_vs_pt{},
29 m_chi2ndofTRTExtensions{},
30 m_chi2ndofNoTRTExtensions{},
31 m_ptresTRTExtensions_vs_eta{},
32 m_ptresTRTExtensions_vs_pt{},
33 m_ptresNoTRTExtensions_vs_eta{},
34 m_ptresNoTRTExtensions_vs_pt{},
35 m_reswidthTRTExtensions_vs_eta{},
36 m_resmeanTRTExtensions_vs_eta{},
37 m_reswidthTRTExtensions_vs_pt{},
38 m_resmeanTRTExtensions_vs_pt{},
39 m_reswidthNoTRTExtensions_vs_eta{},
40 m_resmeanNoTRTExtensions_vs_eta{},
41 m_reswidthNoTRTExtensions_vs_pt{},
42 m_resmeanNoTRTExtensions_vs_pt{},
43 m_ptpullTRTExtensions_vs_eta{},
44 m_ptpullTRTExtensions_vs_pt{},
45 m_ptpullNoTRTExtensions_vs_eta{},
46 m_ptpullNoTRTExtensions_vs_pt{},
47 m_pullwidthTRTExtensions_vs_eta{},
48 m_pullmeanTRTExtensions_vs_eta{},
49 m_pullwidthTRTExtensions_vs_pt{},
50 m_pullmeanTRTExtensions_vs_pt{},
51 m_pullwidthNoTRTExtensions_vs_eta{},
52 m_pullmeanNoTRTExtensions_vs_eta{},
53 m_pullwidthNoTRTExtensions_vs_pt{},
54 m_pullmeanNoTRTExtensions_vs_pt{}
119 std::bitset<xAOD::TrackPatternRecoInfo::NumberOfTrackRecoInfo> patternInfo =
particle.patternRecoInfo();
136 std::bitset<xAOD::TrackPatternRecoInfo::NumberOfTrackRecoInfo> patternInfo =
particle.patternRecoInfo();
152 std::bitset<xAOD::TrackPatternRecoInfo::NumberOfTrackRecoInfo> patternInfo =
particle.patternRecoInfo();
153 bool isTRTExtension = patternInfo.test(3) or iTrtHits > 0;
156 const float undefinedValue = -9999;
157 const float smallestAllowableTan = 1
e-8;
159 const bool saneSineValue = (std::abs(sinTheta) > 1
e-8);
160 const float inverseSinTheta = saneSineValue ? 1./sinTheta : undefinedValue;
161 float track_qopt = saneSineValue ?
particle.qOverP()*inverseSinTheta : undefinedValue;
162 const float qopterr = std::sqrt(
particle.definingParametersCovMatrix()(4, 4)) * inverseSinTheta;
166 const float truth_qop = qOverPAcc.
isAvailable(truthParticle) ? qOverPAcc(truthParticle) : undefinedValue;
167 const float truth_theta = thetaAcc.
isAvailable(truthParticle) ? thetaAcc(truthParticle) : undefinedValue;
168 float truth_qopt = std::abs(truth_theta) > 0 ? truth_qop * 1/(
std::sin(truth_theta)) : undefinedValue;
170 float ptres = (track_qopt - truth_qopt) * ( 1 / truth_qopt);
171 float ptpull = qopterr > smallestAllowableTan ? (track_qopt - truth_qopt) / qopterr : undefinedValue;
173 const float tanHalfTheta =
std::tan(truth_theta * 0.5);
174 const bool tanThetaIsSane = std::abs(tanHalfTheta) > smallestAllowableTan;
175 float eta = undefinedValue;