82 n_subjetsDec(xDiTau) = ditauTrackingInfo.
nSubjets;
121 n_trackDec(xDiTau) =
n_track(xDiTau, ditauTrackingInfo);
122 n_isotrackDec(xDiTau) =
n_isotrack(xDiTau, ditauTrackingInfo);
123 R_track_allDec(xDiTau) =
R_track_all(xDiTau, ditauTrackingInfo);
125 M_track_allDec(xDiTau) =
mass_track_all(xDiTau, ditauTrackingInfo);
126 f_isotracksDec(xDiTau) =
f_isotracks(xDiTau, ditauTrackingInfo);
128 if (ditauTrackingInfo.
nSubjets > 2) {
129 E_frac_subsublDec(xDiTau) =
E_frac (xDiTau, ditauTrackingInfo, 2);
130 R_subjets_subsublDec(xDiTau) =
R_subjets (xDiTau, ditauTrackingInfo, 2);
132 if (ditauTrackingInfo.
nSubjets > 1) {
133 ditau_ptDec(xDiTau) =
ditau_pt (xDiTau, ditauTrackingInfo);
134 f_subjetsDec(xDiTau) =
f_subjets (xDiTau, ditauTrackingInfo);
135 R_track_coreDec(xDiTau) =
R_track_core (xDiTau, ditauTrackingInfo);
136 R_trackDec(xDiTau) =
R_track (xDiTau, ditauTrackingInfo);
137 R_isotrackDec(xDiTau) =
R_isotrack (xDiTau, ditauTrackingInfo);
138 M_trackDec(xDiTau) =
mass_track (xDiTau, ditauTrackingInfo);
140 d0_leadtrack_sublDec(xDiTau) =
d0_leadtrack (xDiTau, ditauTrackingInfo, 1);
141 f_core_sublDec(xDiTau) =
f_core (xDiTau, ditauTrackingInfo, 1);
142 f_subjet_sublDec(xDiTau) =
f_subjet (xDiTau, ditauTrackingInfo, 1);
143 f_track_sublDec(xDiTau) =
f_track (xDiTau, ditauTrackingInfo, 1);
144 R_max_sublDec(xDiTau) =
R_max (xDiTau, ditauTrackingInfo, 1);
145 n_tracks_sublDec(xDiTau) =
n_tracks (xDiTau, ditauTrackingInfo, 1);
146 R_core_sublDec(xDiTau) =
R_core (xDiTau, ditauTrackingInfo, 1);
147 R_tracks_sublDec(xDiTau) =
R_tracks (xDiTau, ditauTrackingInfo, 1);
148 M_core_sublDec(xDiTau) =
mass_core (xDiTau, ditauTrackingInfo, 1);
149 M_tracks_sublDec(xDiTau) =
mass_tracks (xDiTau, ditauTrackingInfo, 1);
150 E_frac_sublDec(xDiTau) =
E_frac (xDiTau, ditauTrackingInfo, 1);
151 R_subjets_sublDec(xDiTau) =
R_subjets (xDiTau, ditauTrackingInfo, 1);
153 if (ditauTrackingInfo.
nSubjets > 0) {
154 d0_leadtrack_leadDec(xDiTau) =
d0_leadtrack (xDiTau, ditauTrackingInfo, 0);
155 f_core_leadDec(xDiTau) =
f_core (xDiTau, ditauTrackingInfo, 0);
156 f_subjet_leadDec(xDiTau) =
f_subjet (xDiTau, ditauTrackingInfo, 0);
157 f_track_leadDec(xDiTau) =
f_track (xDiTau, ditauTrackingInfo, 0);
158 R_max_leadDec(xDiTau) =
R_max (xDiTau, ditauTrackingInfo, 0);
159 n_tracks_leadDec(xDiTau) =
n_tracks (xDiTau, ditauTrackingInfo, 0);
160 R_core_leadDec(xDiTau) =
R_core (xDiTau, ditauTrackingInfo, 0);
161 R_tracks_leadDec(xDiTau) =
R_tracks (xDiTau, ditauTrackingInfo, 0);
162 M_core_leadDec(xDiTau) =
mass_core (xDiTau, ditauTrackingInfo, 0);
163 M_tracks_leadDec(xDiTau) =
mass_tracks (xDiTau, ditauTrackingInfo, 0);
165 return StatusCode::SUCCESS;
427 ATH_MSG_WARNING(
"Track " << (!trackLinksAcc.
isAvailable(xDiTau) ?
"DiTauJet.trackLinks" :
"DiTauJet.isoTrackLinks") <<
" links not available.");
428 return StatusCode::FAILURE;
431 int nSubjets =
n_subjets(xDiTau, trackingInfo);
432 float Rsubjet = R_subjetAcc(xDiTau);
433 float RCore = R_coreAcc(xDiTau);
441 std::vector<ElementLink<xAOD::TrackParticleContainer>> isoTrackLinks = xDiTau.
isoTrackLinks();
442 for (
const auto &trackLink: isoTrackLinks) {
443 if (!trackLink.isValid()) {
450 std::vector<ElementLink<xAOD::TrackParticleContainer>> trackLinks = xDiTau.
trackLinks();
451 for (
const auto &trackLink : trackLinks) {
452 if (!trackLink.isValid()) {
457 trackingInfo.
vTracks.push_back(xTrack);
460 for (
int i=0; i<nSubjets; ++i){
462 TLorentzVector subjet_p4 = TLorentzVector();
464 subjetTrackingInfo.
subjet_p4 = subjet_p4;
465 trackingInfo.
vSubjetInfo.push_back(subjetTrackingInfo);
467 for (
const auto track : trackingInfo.
vTracks) {
470 for (
int i=0; i<nSubjets; ++i){
471 float dRTrackSubjet = trackingInfo.
vSubjetInfo[i].subjet_p4.DeltaR(track->p4());
472 if (dRTrackSubjet < Rsubjet && dRTrackSubjet < dRMin){
473 dRMin = dRTrackSubjet;
478 trackingInfo.
vSubjetInfo[inSubjet].vTracks.push_back(track);
482 for (
int i=0; i<nSubjets; ++i){
483 float ptLeadTrack = 0;
484 for (
const auto track : trackingInfo.
vSubjetInfo[i].vTracks){
485 if (track->pt() > ptLeadTrack){
486 ptLeadTrack = track->pt();
492 for (
int i=0; i<nSubjets; ++i){
493 for (
const auto track : trackingInfo.
vSubjetInfo[i].vTracks){
494 auto subjetTrackingInfo = trackingInfo.
vSubjetInfo[i];
495 if (subjetTrackingInfo.subjet_p4.DeltaR(track->p4()) < RCore){
496 trackingInfo.
vSubjetInfo[i].vCoreTracks.push_back(track);
501 for (
const auto track : trackingInfo.
vIsoTracks){
505 for (
int i=0; i<nSubjets; ++i){
506 float dRTrackSubjet = trackingInfo.
vSubjetInfo[i].subjet_p4.DeltaR(track->p4());
507 if (dRTrackSubjet > Rsubjet && dRTrackSubjet < RIso && dRTrackSubjet < dRMin){
508 dRMin = dRTrackSubjet;
513 trackingInfo.
vSubjetInfo[inSubjet].vIsoTracks.push_back(track);
516 return StatusCode::SUCCESS;
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
virtual double pt() const override final
The transverse momentum ( ) of the particle.