ATLAS Offline Software
DiTauExtraVarDecorator.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 // Core include(s):
8 #include "AthLinks/ElementLink.h"
11 
12 // EDM include(s):
15 
16 #include "xAODTau/DiTauJet.h"
17 
18 DiTauExtraVarDecorator::DiTauExtraVarDecorator( const std::string& type, const std::string& name, const IInterface * parent) :
20 {
21  declareInterface<DiTauToolBase > (this);
22 }
23 
25 
27  ATH_MSG_INFO( "Initializing DiTauExtraVarDecorator" );
28  ATH_CHECK( m_ditau_ptDecKey.initialize() );
29  ATH_CHECK( m_f_core_leadDecKey.initialize() );
30  ATH_CHECK( m_f_core_sublDecKey.initialize() );
31  ATH_CHECK( m_f_subjet_leadDecKey.initialize() );
32  ATH_CHECK( m_f_subjet_sublDecKey.initialize() );
33  ATH_CHECK( m_f_subjetsDecKey.initialize() );
34  ATH_CHECK( m_f_track_leadDecKey.initialize() );
35  ATH_CHECK( m_f_track_sublDecKey.initialize() );
36  ATH_CHECK( m_R_max_leadDecKey.initialize() );
37  ATH_CHECK( m_R_max_sublDecKey.initialize() );
38  ATH_CHECK( m_n_trackDecKey.initialize() );
39  ATH_CHECK( m_n_tracks_leadDecKey.initialize() );
40  ATH_CHECK( m_n_tracks_sublDecKey.initialize() );
41  ATH_CHECK( m_n_isotrackDecKey.initialize() );
42  ATH_CHECK( m_R_trackDecKey.initialize() );
43  ATH_CHECK( m_R_track_coreDecKey.initialize() );
44  ATH_CHECK( m_R_track_allDecKey.initialize() );
45  ATH_CHECK( m_R_isotrackDecKey.initialize() );
46  ATH_CHECK( m_R_core_leadDecKey.initialize() );
47  ATH_CHECK( m_R_core_sublDecKey.initialize() );
48  ATH_CHECK( m_R_tracks_leadDecKey.initialize() );
49  ATH_CHECK( m_R_tracks_sublDecKey.initialize() );
50  ATH_CHECK( m_M_trackDecKey.initialize() );
51  ATH_CHECK( m_M_track_coreDecKey.initialize() );
52  ATH_CHECK( m_M_core_leadDecKey.initialize() );
53  ATH_CHECK( m_M_core_sublDecKey.initialize() );
54  ATH_CHECK( m_M_track_allDecKey.initialize() );
55  ATH_CHECK( m_M_tracks_leadDecKey.initialize() );
56  ATH_CHECK( m_M_tracks_sublDecKey.initialize() );
57  ATH_CHECK( m_E_frac_sublDecKey.initialize() );
58  ATH_CHECK( m_E_frac_subsublDecKey.initialize() );
59  ATH_CHECK( m_R_subjets_sublDecKey.initialize() );
60  ATH_CHECK( m_R_subjets_subsublDecKey.initialize() );
61  ATH_CHECK( m_d0_leadtrack_leadDecKey.initialize() );
62  ATH_CHECK( m_d0_leadtrack_sublDecKey.initialize() );
63  ATH_CHECK( m_f_isotracksDecKey.initialize() );
64 
65  return StatusCode::SUCCESS;
66 }
67 
69  xAOD::DiTauJet* xDiTauPtr = data->xAODDiTau;
70  xAOD::DiTauJet& xDiTau = *xDiTauPtr;
71  ATH_CHECK( executeObj(xDiTau, ctx));
72  return StatusCode::SUCCESS;
73 }
74 
75 StatusCode DiTauExtraVarDecorator::executeObj( xAOD::DiTauJet& xDiTau, const EventContext& ctx) const{
76 
77  ATH_MSG_DEBUG("Calculate DiTau ID variables");
78 
79  static const SG::Accessor< int > n_subjetsDec("n_subjets");
80  DitauTrackingInfo ditauTrackingInfo;
81  ATH_CHECK( getTrackingInfo(xDiTau, ditauTrackingInfo) );
82  n_subjetsDec(xDiTau) = ditauTrackingInfo.nSubjets;
83 
85  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > f_core_leadDec (m_f_core_leadDecKey, ctx); f_core_leadDec(xDiTau) = m_dDefault;
86  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > f_core_sublDec (m_f_core_sublDecKey, ctx); f_core_sublDec(xDiTau) = m_dDefault;
87  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > f_subjet_leadDec (m_f_subjet_leadDecKey, ctx); f_subjet_leadDec(xDiTau) = m_dDefault;
88  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > f_subjet_sublDec (m_f_subjet_sublDecKey, ctx); f_subjet_sublDec(xDiTau) = m_dDefault;
89  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > f_subjetsDec (m_f_subjetsDecKey, ctx); f_subjetsDec(xDiTau) = m_dDefault;
90  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > f_track_leadDec (m_f_track_leadDecKey, ctx); f_track_leadDec(xDiTau) = m_dDefault;
91  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > f_track_sublDec (m_f_track_sublDecKey, ctx); f_track_sublDec(xDiTau) = m_dDefault;
92  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > R_max_leadDec (m_R_max_leadDecKey, ctx); R_max_leadDec(xDiTau) = m_dDefault;
93  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > R_max_sublDec (m_R_max_sublDecKey, ctx); R_max_sublDec(xDiTau) = m_dDefault;
95  SG::WriteDecorHandle<xAOD::DiTauJetContainer, int > n_tracks_leadDec (m_n_tracks_leadDecKey, ctx); n_tracks_leadDec(xDiTau) = m_dDefault;
96  SG::WriteDecorHandle<xAOD::DiTauJetContainer, int > n_tracks_sublDec (m_n_tracks_sublDecKey, ctx); n_tracks_sublDec(xDiTau) = m_dDefault;
97  SG::WriteDecorHandle<xAOD::DiTauJetContainer, int > n_isotrackDec (m_n_isotrackDecKey, ctx); n_isotrackDec(xDiTau) = m_dDefault;
99  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > R_track_coreDec (m_R_track_coreDecKey, ctx); R_track_coreDec(xDiTau) = m_dDefault;
100  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > R_track_allDec (m_R_track_allDecKey, ctx); R_track_allDec(xDiTau) = m_dDefault;
101  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > R_isotrackDec (m_R_isotrackDecKey, ctx); R_isotrackDec(xDiTau) = m_dDefault;
102  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > R_core_leadDec (m_R_core_leadDecKey, ctx); R_core_leadDec(xDiTau) = m_dDefault;
103  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > R_core_sublDec (m_R_core_sublDecKey, ctx); R_core_sublDec(xDiTau) = m_dDefault;
104  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > R_tracks_leadDec (m_R_tracks_leadDecKey, ctx); R_tracks_leadDec(xDiTau) = m_dDefault;
105  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > R_tracks_sublDec (m_R_tracks_sublDecKey, ctx); R_tracks_sublDec(xDiTau) = m_dDefault;
107  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > M_track_coreDec (m_M_track_coreDecKey, ctx); M_track_coreDec(xDiTau) = m_dDefault;
108  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > M_core_leadDec (m_M_core_leadDecKey, ctx); M_core_leadDec(xDiTau) = m_dDefault;
109  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > M_core_sublDec (m_M_core_sublDecKey, ctx); M_core_sublDec(xDiTau) = m_dDefault;
110  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > M_track_allDec (m_M_track_allDecKey, ctx); M_track_allDec(xDiTau) = m_dDefault;
111  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > M_tracks_leadDec (m_M_tracks_leadDecKey, ctx); M_tracks_leadDec(xDiTau) = m_dDefault;
112  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > M_tracks_sublDec (m_M_tracks_sublDecKey, ctx); M_tracks_sublDec(xDiTau) = m_dDefault;
113  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > E_frac_sublDec (m_E_frac_sublDecKey, ctx); E_frac_sublDec(xDiTau) = m_dDefault;
114  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > E_frac_subsublDec (m_E_frac_subsublDecKey, ctx); E_frac_subsublDec(xDiTau) = m_dDefault;
115  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > R_subjets_sublDec (m_R_subjets_sublDecKey, ctx); R_subjets_sublDec(xDiTau) = m_dDefault;
116  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > R_subjets_subsublDec (m_R_subjets_subsublDecKey, ctx); R_subjets_subsublDec(xDiTau) = m_dDefault;
117  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > d0_leadtrack_leadDec (m_d0_leadtrack_leadDecKey, ctx); d0_leadtrack_leadDec(xDiTau) = m_dDefault;
118  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > d0_leadtrack_sublDec (m_d0_leadtrack_sublDecKey, ctx); d0_leadtrack_sublDec(xDiTau) = m_dDefault;
119  SG::WriteDecorHandle<xAOD::DiTauJetContainer, float > f_isotracksDec (m_f_isotracksDecKey, ctx); f_isotracksDec(xDiTau) = m_dDefault;
120 
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);
124 
125  M_track_allDec(xDiTau) = mass_track_all(xDiTau, ditauTrackingInfo);
126  f_isotracksDec(xDiTau) = f_isotracks(xDiTau, ditauTrackingInfo);
127 
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);
131  }
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);
139  M_track_coreDec(xDiTau) = mass_track_core(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);
152  }
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);
164  }
165  return StatusCode::SUCCESS;
166 }
167 
169  int nSubjet = 0;
170  while (xDiTau.subjetPt(nSubjet) > 0. ){
171  nSubjet++;
172  }
173  return nSubjet;
174 }
175 
177 {
178  return xDiTau.subjetPt(0)+xDiTau.subjetPt(1);
179 }
180 
181 float DiTauExtraVarDecorator::f_core(const xAOD::DiTauJet& xDiTau, const DitauTrackingInfo&, int iSubjet) const
182 {
183  return xDiTau.fCore(iSubjet);
184 }
185 
186 float DiTauExtraVarDecorator::f_subjet(const xAOD::DiTauJet& xDiTau, const DitauTrackingInfo&, int iSubjet) const {
187  return xDiTau.subjetPt(iSubjet) / xDiTau.pt();
188 }
189 
191 {
192  return (xDiTau.subjetPt(0) + xDiTau.subjetPt(1))/ xDiTau.pt();
193 }
194 
195 float DiTauExtraVarDecorator::f_track(const xAOD::DiTauJet&, const DitauTrackingInfo& ditauInfo, int iSubjet) const
196 {
197  SubjetTrackingInfo subjetInfo = ditauInfo.vSubjetInfo.at(iSubjet);
198  float leadTrackPt = subjetInfo.leadTrack ? subjetInfo.leadTrack->pt() : 0;
199  float subjetPt = subjetInfo.subjet_p4.Pt();
200  return leadTrackPt / subjetPt;
201 }
202 
203 float DiTauExtraVarDecorator::R_max(const xAOD::DiTauJet&, const DitauTrackingInfo& ditauInfo, int iSubjet) const {
204  SubjetTrackingInfo subjetInfo = ditauInfo.vSubjetInfo.at(iSubjet);
205  float Rmax = 0;
206  for (const xAOD::TrackParticle* xTrack: subjetInfo.vTracks) {
207  if (subjetInfo.subjet_p4.DeltaR(xTrack->p4()) > Rmax) {
208  Rmax = subjetInfo.subjet_p4.DeltaR(xTrack->p4());
209  }
210  }
211  return Rmax;
212 }
213 
215  return xDiTau.nTracks();
216 }
217 
218 int DiTauExtraVarDecorator::n_tracks(const xAOD::DiTauJet&, const DitauTrackingInfo& ditauInfo, int iSubjet) const {
219  SubjetTrackingInfo subjetInfo = ditauInfo.vSubjetInfo.at(iSubjet);
220  return subjetInfo.vTracks.size();
221 }
222 
224  return xDiTau.nIsoTracks();
225 }
226 
227 float DiTauExtraVarDecorator::R_tracks(const xAOD::DiTauJet&, const DitauTrackingInfo& ditauInfo, int iSubjet) const {
228  float R_sum = 0;
229  float pt = 0;
230 
231  SubjetTrackingInfo subjetInfo = ditauInfo.vSubjetInfo.at(iSubjet);
232  for (const xAOD::TrackParticle* xTrack: subjetInfo.vTracks) {
233  R_sum += subjetInfo.subjet_p4.DeltaR(xTrack->p4()) * xTrack->pt();
234  pt += xTrack->pt();
235  }
236  if (pt == 0) {
237  return m_dDefault;
238  }
239  return R_sum / pt;
240 }
241 
242 float DiTauExtraVarDecorator::R_core(const xAOD::DiTauJet&, const DitauTrackingInfo& ditauInfo, int iSubjet) const {
243  double R_sum = 0;
244  double pt = 0;
245  SubjetTrackingInfo subjetInfo = ditauInfo.vSubjetInfo.at(iSubjet);
246  for (const xAOD::TrackParticle* xTrack: subjetInfo.vCoreTracks) {
247  R_sum += subjetInfo.subjet_p4.DeltaR(xTrack->p4()) * xTrack->pt();
248  pt += xTrack->pt();
249  }
250  if (pt == 0) {
251  return m_dDefault;
252  }
253  return R_sum / pt;
254 
255 }
256 
258  float R_sum = 0;
259  float pt = 0;
260  for (int i = 0; i < 2; i++) {
261  SubjetTrackingInfo subjetInfo = ditauInfo.vSubjetInfo.at(i);
262  for (const xAOD::TrackParticle* xTrack: subjetInfo.vCoreTracks) {
263  R_sum += subjetInfo.subjet_p4.DeltaR(xTrack->p4()) * xTrack->pt();
264  pt += xTrack->pt();
265  }
266  }
267  if (pt == 0) {
268  return m_dDefault;
269  }
270  return R_sum / pt;
271 }
272 
274 {
275  float R_sum = 0;
276  float pt = 0;
277  for (int i = 0; i < 2; i++) {
278  SubjetTrackingInfo subjetInfo = ditauInfo.vSubjetInfo.at(i);
279  for (const xAOD::TrackParticle* xTrack: subjetInfo.vTracks) {
280  R_sum += subjetInfo.subjet_p4.DeltaR(xTrack->p4()) * xTrack->pt();
281  pt += xTrack->pt();
282  }
283  }
284  if (pt == 0) {
285  return m_dDefault;
286  }
287  return R_sum / pt;
288 }
289 
291 {
292  double R_sum = 0;
293  double pt = 0;
294 
295  for (const SubjetTrackingInfo& subjetInfo : ditauInfo.vSubjetInfo) {
296  for (const xAOD::TrackParticle* xTrack: subjetInfo.vTracks) {
297  R_sum += subjetInfo.subjet_p4.DeltaR(xTrack->p4())*xTrack->pt();
298  pt += xTrack->pt();
299  }
300  }
301  if (pt == 0) {
302  return m_dDefault;
303  }
304  return R_sum / pt;
305 }
306 
308 {
309  float R_sum = 0;
310  float pt = 0;
311  for (int i = 0; i < 2; i++) {
312  SubjetTrackingInfo subjetInfo = ditauInfo.vSubjetInfo.at(i);
313  for (const xAOD::TrackParticle* xTrack: subjetInfo.vIsoTracks) {
314  R_sum += subjetInfo.subjet_p4.DeltaR(xTrack->p4()) * xTrack->pt();
315  pt += xTrack->pt();
316  }
317  }
318  if (pt == 0) {
319  return m_dDefault;
320  }
321  return R_sum / pt;
322 }
323 
325 {
326  TLorentzVector allCoreTracks_p4;
327  for (int i = 0; i < 2; i++) {
328  SubjetTrackingInfo subjetInfo = ditauInfo.vSubjetInfo.at(i);
329  for (const xAOD::TrackParticle* xTrack: subjetInfo.vCoreTracks) {
330  allCoreTracks_p4 += xTrack->p4();
331  }
332  }
333  float mass = allCoreTracks_p4.M();
334  if (mass < 0) {
335  return m_dDefault;
336  }
337  return mass;
338 }
339 
340 float DiTauExtraVarDecorator::mass_core(const xAOD::DiTauJet&, const DitauTrackingInfo& ditauInfo, int iSubjet) const {
341  TLorentzVector allCoreTracks_p4;
342  SubjetTrackingInfo subjetInfo = ditauInfo.vSubjetInfo.at(iSubjet);
343  for (const xAOD::TrackParticle* xTrack: subjetInfo.vCoreTracks) {
344  allCoreTracks_p4 += xTrack->p4();
345  }
346  float mass = allCoreTracks_p4.M();
347  if (mass < 0) {
348  return m_dDefault;
349  }
350  return mass;
351 }
352 
353 float DiTauExtraVarDecorator::mass_tracks(const xAOD::DiTauJet&, const DitauTrackingInfo& ditauInfo, int iSubjet) const {
354  TLorentzVector allTracks_p4;
355  SubjetTrackingInfo subjetInfo = ditauInfo.vSubjetInfo.at(iSubjet);
356  for (const xAOD::TrackParticle* xTrack: subjetInfo.vTracks) {
357  allTracks_p4 += xTrack->p4();
358  }
359  float mass = allTracks_p4.M();
360  if (mass < 0) {
361  return m_dDefault;
362  }
363  return mass;
364 }
365 
367  TLorentzVector allTracks_p4;
368  for (const xAOD::TrackParticle* xTrack: ditauInfo.vTracks) {
369  allTracks_p4 += xTrack->p4();
370  }
371  float mass = allTracks_p4.M();
372  if (mass < 0) {
373  return m_dDefault;
374  }
375  return mass;
376 }
377 
379  TLorentzVector allTracks_p4;
380  for (const xAOD::TrackParticle* xTrack: ditauInfo.vTracks) {
381  allTracks_p4 += xTrack->p4();
382  }
383  for (const xAOD::TrackParticle* xTrack: ditauInfo.vIsoTracks) {
384  allTracks_p4 += xTrack->p4();
385  }
386  float mass = allTracks_p4.M();
387  if (mass < 0) {
388  return m_dDefault;
389  }
390  return mass;
391 }
392 
393 float DiTauExtraVarDecorator::E_frac(const xAOD::DiTauJet& xDiTau, const DitauTrackingInfo&, int iSubjet) const {
394  return xDiTau.subjetE(iSubjet) / xDiTau.subjetE(0);
395 }
396 
397 float DiTauExtraVarDecorator::R_subjets(const xAOD::DiTauJet&, const DitauTrackingInfo& ditauInfo, int iSubjet) const {
398  TLorentzVector leadSubjet_p4 = ditauInfo.vSubjetInfo.at(0).subjet_p4;
399  TLorentzVector subjet_p4 = ditauInfo.vSubjetInfo.at(iSubjet).subjet_p4;
400  return leadSubjet_p4.DeltaR(subjet_p4);
401 }
402 
403 float DiTauExtraVarDecorator::d0_leadtrack(const xAOD::DiTauJet&, const DitauTrackingInfo& ditauInfo, int iSubjet) const {
404  SubjetTrackingInfo subjetInfo = ditauInfo.vSubjetInfo.at(iSubjet);
405  if (!subjetInfo.leadTrack) {
406  return m_dDefault;
407  }
408  return subjetInfo.leadTrack->d0();
409 }
410 
411 float DiTauExtraVarDecorator::f_isotracks(const xAOD::DiTauJet& xDiTau, const DitauTrackingInfo& ditauInfo) const {
412  float iso_pt = 0;
413  for (const xAOD::TrackParticle* xTrack: ditauInfo.vIsoTracks) {
414  iso_pt += xTrack->pt();
415  }
416  return iso_pt / xDiTau.pt();
417 }
418 
420  static const SG::ConstAccessor<std::vector<ElementLink<xAOD::TrackParticleContainer>>> trackLinksAcc("trackLinks");
421  static const SG::ConstAccessor<std::vector<ElementLink<xAOD::TrackParticleContainer>>> isoTrackLinksAcc("isoTrackLinks");
422  static const SG::ConstAccessor<float> R_subjetAcc("R_subjet");
423  static const SG::ConstAccessor<float> R_coreAcc("R_core");
424 
425 
426  if (!trackLinksAcc.isAvailable(xDiTau) || !isoTrackLinksAcc.isAvailable(xDiTau)) {
427  ATH_MSG_WARNING("Track " << (!trackLinksAcc.isAvailable(xDiTau) ? "DiTauJet.trackLinks" : "DiTauJet.isoTrackLinks") << " links not available.");
428  return StatusCode::FAILURE;
429  }
430 
431  int nSubjets = n_subjets(xDiTau, trackingInfo);
432  float Rsubjet = R_subjetAcc(xDiTau);
433  float RCore = R_coreAcc(xDiTau);
434 
435  trackingInfo.nSubjets = nSubjets;
436  trackingInfo.vSubjetInfo.clear();
437  trackingInfo.vIsoTracks.clear();
438  trackingInfo.vTracks.clear();
439 
440  // Get the track links from the DiTauJet and store them in the tracking info
441  std::vector<ElementLink<xAOD::TrackParticleContainer>> isoTrackLinks = xDiTau.isoTrackLinks();
442  for (const auto &trackLink: isoTrackLinks) {
443  if (!trackLink.isValid()) {
444  ATH_MSG_WARNING("Iso track link is not valid");
445  continue;
446  }
447  const xAOD::TrackParticle* xTrack = *trackLink;
448  trackingInfo.vIsoTracks.push_back(xTrack);
449  }
450  std::vector<ElementLink<xAOD::TrackParticleContainer>> trackLinks = xDiTau.trackLinks();
451  for (const auto &trackLink : trackLinks) {
452  if (!trackLink.isValid()) {
453  ATH_MSG_WARNING("track link is not valid");
454  continue;
455  }
456  const xAOD::TrackParticle* xTrack = *trackLink;
457  trackingInfo.vTracks.push_back(xTrack);
458  }
459  // store subjet p4
460  for (int i=0; i<nSubjets; ++i){
461  SubjetTrackingInfo subjetTrackingInfo;
462  TLorentzVector subjet_p4 = TLorentzVector();
463  subjet_p4.SetPtEtaPhiE( xDiTau.subjetPt(i), xDiTau.subjetEta(i), xDiTau.subjetPhi(i), xDiTau.subjetE(i));
464  subjetTrackingInfo.subjet_p4 = subjet_p4;
465  trackingInfo.vSubjetInfo.push_back(subjetTrackingInfo);
466  }
467  for (const auto track : trackingInfo.vTracks) {
468  float dRMin = 999;
469  int inSubjet = -1;
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;
474  inSubjet = i;
475  }
476  }
477  if (inSubjet >= 0){
478  trackingInfo.vSubjetInfo[inSubjet].vTracks.push_back(track);
479  }
480  }
481  // find leading track in subjets
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();
487  trackingInfo.vSubjetInfo[i].leadTrack = track;
488  }
489  }
490  }
491  // find core track in subjets
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);
497  }
498  }
499  }
500  //find isotracks in subjets
501  for (const auto track : trackingInfo.vIsoTracks){
502  float RIso = 0.4;
503  float dRMin = 999;
504  int inSubjet = -1;
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;
509  inSubjet = i;
510  }
511  }
512  if (inSubjet >= 0){
513  trackingInfo.vSubjetInfo[inSubjet].vIsoTracks.push_back(track);
514  }
515  }
516  return StatusCode::SUCCESS;
517 }
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:74
xAOD::DiTauJet_v1::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
DiTauExtraVarDecorator::m_f_core_sublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_f_core_sublDecKey
Definition: DiTauExtraVarDecorator.h:74
DiTauExtraVarDecorator::m_R_track_allDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_R_track_allDecKey
Definition: DiTauExtraVarDecorator.h:88
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
DiTauExtraVarDecorator::m_M_trackDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_M_trackDecKey
Definition: DiTauExtraVarDecorator.h:94
DiTauExtraVarDecorator::m_R_trackDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_R_trackDecKey
Definition: DiTauExtraVarDecorator.h:86
DiTauExtraVarDecorator::R_max
float R_max(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo, int iSubjet) const
Definition: DiTauExtraVarDecorator.cxx:203
DiTauExtraVarDecorator::m_dDefault
Gaudi::Property< float > m_dDefault
Definition: DiTauExtraVarDecorator.h:67
xAOD::DiTauJet_v1::fCore
float fCore(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:167
DiTauExtraVarDecorator::getTrackingInfo
StatusCode getTrackingInfo(xAOD::DiTauJet &xDiTau, DitauTrackingInfo &trackingInfo) const
Definition: DiTauExtraVarDecorator.cxx:419
DiTauExtraVarDecorator::m_f_track_sublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_f_track_sublDecKey
Definition: DiTauExtraVarDecorator.h:79
DiTauExtraVarDecorator::m_M_tracks_leadDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_M_tracks_leadDecKey
Definition: DiTauExtraVarDecorator.h:99
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
DiTauExtraVarDecorator::m_E_frac_subsublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_E_frac_subsublDecKey
Definition: DiTauExtraVarDecorator.h:102
Base_Fragment.mass
mass
Definition: Sherpa_i/share/common/Base_Fragment.py:59
SG::Accessor< int >
DiTauExtraVarDecorator::mass_track
float mass_track(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo) const
Definition: DiTauExtraVarDecorator.cxx:366
DiTauExtraVarDecorator::m_R_subjets_subsublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_R_subjets_subsublDecKey
Definition: DiTauExtraVarDecorator.h:104
DiTauExtraVarDecorator::DitauTrackingInfo
Definition: DiTauExtraVarDecorator.h:34
DiTauExtraVarDecorator::n_tracks
int n_tracks(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo, int iSubjet) const
Definition: DiTauExtraVarDecorator.cxx:218
DiTauExtraVarDecorator::f_subjets
float f_subjets(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo) const
Definition: DiTauExtraVarDecorator.cxx:190
DiTauExtraVarDecorator::m_f_core_leadDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_f_core_leadDecKey
Definition: DiTauExtraVarDecorator.h:73
DiTauExtraVarDecorator::m_R_subjets_sublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_R_subjets_sublDecKey
Definition: DiTauExtraVarDecorator.h:103
DiTauExtraVarDecorator::m_E_frac_sublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_E_frac_sublDecKey
Definition: DiTauExtraVarDecorator.h:101
xAOD::DiTauJet_v1::subjetPhi
float subjetPhi(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:111
DiTauExtraVarDecorator::m_f_track_leadDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_f_track_leadDecKey
Definition: DiTauExtraVarDecorator.h:78
test_pyathena.pt
pt
Definition: test_pyathena.py:11
DiTauExtraVarDecorator::mass_track_all
float mass_track_all(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo) const
Definition: DiTauExtraVarDecorator.cxx:378
DiTauExtraVarDecorator::R_track
float R_track(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo) const
Definition: DiTauExtraVarDecorator.cxx:273
DiTauExtraVarDecorator::R_core
float R_core(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo, int iSubjet) const
Definition: DiTauExtraVarDecorator.cxx:242
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
DiTauExtraVarDecorator::R_subjets
float R_subjets(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo, int iSubjet) const
Definition: DiTauExtraVarDecorator.cxx:397
DiTauExtraVarDecorator::m_n_trackDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_n_trackDecKey
Definition: DiTauExtraVarDecorator.h:82
DiTauExtraVarDecorator::DitauTrackingInfo::vTracks
std::vector< const xAOD::TrackParticle * > vTracks
Definition: DiTauExtraVarDecorator.h:35
DiTauExtraVarDecorator::E_frac
float E_frac(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo, int iSubjet) const
Definition: DiTauExtraVarDecorator.cxx:393
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
DiTauExtraVarDecorator::n_isotrack
int n_isotrack(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo) const
Definition: DiTauExtraVarDecorator.cxx:223
xAOD::TrackParticle_v1::d0
float d0() const
Returns the parameter.
DiTauExtraVarDecorator::m_M_tracks_sublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_M_tracks_sublDecKey
Definition: DiTauExtraVarDecorator.h:100
xAOD::DiTauJet_v1::subjetE
float subjetE(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:121
DiTauExtraVarDecorator::SubjetTrackingInfo::vTracks
std::vector< const xAOD::TrackParticle * > vTracks
Definition: DiTauExtraVarDecorator.h:29
DiTauExtraVarDecorator::mass_tracks
float mass_tracks(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo, int iSubjet) const
Definition: DiTauExtraVarDecorator.cxx:353
xAOD::TrackParticle_v1::p4
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
Definition: TrackParticle_v1.cxx:130
DiTauExtraVarDecorator::n_track
int n_track(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo) const
Definition: DiTauExtraVarDecorator.cxx:214
DiTauExtraVarDecorator::R_track_all
float R_track_all(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo) const
Definition: DiTauExtraVarDecorator.cxx:290
DiTauExtraVarDecorator::m_R_max_leadDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_R_max_leadDecKey
Definition: DiTauExtraVarDecorator.h:80
lumiFormat.i
int i
Definition: lumiFormat.py:85
DiTauExtraVarDecorator::m_R_tracks_leadDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_R_tracks_leadDecKey
Definition: DiTauExtraVarDecorator.h:92
DiTauExtraVarDecorator::mass_track_core
float mass_track_core(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo) const
Definition: DiTauExtraVarDecorator.cxx:324
DiTauExtraVarDecorator::SubjetTrackingInfo
Definition: DiTauExtraVarDecorator.h:27
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
DiTauExtraVarDecorator::mass_core
float mass_core(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo, int iSubjet) const
Definition: DiTauExtraVarDecorator.cxx:340
DiTauExtraVarDecorator::executeObj
virtual StatusCode executeObj(xAOD::DiTauJet &xDiTau, const EventContext &ctx) const override
Execute - called for each Ditau jet.
Definition: DiTauExtraVarDecorator.cxx:75
DiTauExtraVarDecorator::SubjetTrackingInfo::leadTrack
const xAOD::TrackParticle * leadTrack
Definition: DiTauExtraVarDecorator.h:32
test_pyathena.parent
parent
Definition: test_pyathena.py:15
DiTauExtraVarDecorator::m_R_core_sublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_R_core_sublDecKey
Definition: DiTauExtraVarDecorator.h:91
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DiTauExtraVarDecorator::m_n_tracks_sublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_n_tracks_sublDecKey
Definition: DiTauExtraVarDecorator.h:84
DiTauExtraVarDecorator::m_R_track_coreDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_R_track_coreDecKey
Definition: DiTauExtraVarDecorator.h:87
DiTauExtraVarDecorator::m_R_tracks_sublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_R_tracks_sublDecKey
Definition: DiTauExtraVarDecorator.h:93
DiTauExtraVarDecorator::d0_leadtrack
float d0_leadtrack(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo, int iSubjet) const
Definition: DiTauExtraVarDecorator.cxx:403
DiTauExtraVarDecorator::ditau_pt
float ditau_pt(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo) const
Definition: DiTauExtraVarDecorator.cxx:176
DiTauExtraVarDecorator::R_isotrack
float R_isotrack(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo) const
Definition: DiTauExtraVarDecorator.cxx:307
DiTauJet.h
xAOD::DiTauJet_v1::subjetEta
float subjetEta(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:101
DiTauExtraVarDecorator::f_subjet
float f_subjet(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo, int iSubjet) const
Definition: DiTauExtraVarDecorator.cxx:186
DiTauExtraVarDecorator::DitauTrackingInfo::vSubjetInfo
std::vector< SubjetTrackingInfo > vSubjetInfo
Definition: DiTauExtraVarDecorator.h:38
DiTauExtraVarDecorator::DitauTrackingInfo::vIsoTracks
std::vector< const xAOD::TrackParticle * > vIsoTracks
Definition: DiTauExtraVarDecorator.h:36
xAOD::DiTauJet_v1::nIsoTracks
size_t nIsoTracks() const
Definition: DiTauJet_v1.cxx:256
xAOD::DiTauJet_v1::nTracks
size_t nTracks() const
Definition: DiTauJet_v1.cxx:224
DiTauExtraVarDecorator::m_R_core_leadDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_R_core_leadDecKey
Definition: DiTauExtraVarDecorator.h:90
DiTauExtraVarDecorator::SubjetTrackingInfo::vCoreTracks
std::vector< const xAOD::TrackParticle * > vCoreTracks
Definition: DiTauExtraVarDecorator.h:31
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
DiTauExtraVarDecorator::m_M_core_sublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_M_core_sublDecKey
Definition: DiTauExtraVarDecorator.h:97
DiTauExtraVarDecorator::f_track
float f_track(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo, int iSubjet) const
Definition: DiTauExtraVarDecorator.cxx:195
DiTauExtraVarDecorator::DitauTrackingInfo::nSubjets
int nSubjets
Definition: DiTauExtraVarDecorator.h:37
Accessor.h
Helper class to provide type-safe access to aux data.
DiTauToolBase
The base class for all tau tools.
Definition: DiTauToolBase.h:21
DiTauExtraVarDecorator::m_f_subjet_sublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_f_subjet_sublDecKey
Definition: DiTauExtraVarDecorator.h:76
DiTauExtraVarDecorator::m_d0_leadtrack_leadDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_d0_leadtrack_leadDecKey
Definition: DiTauExtraVarDecorator.h:105
DiTauExtraVarDecorator::SubjetTrackingInfo::subjet_p4
TLorentzVector subjet_p4
Definition: DiTauExtraVarDecorator.h:28
DiTauExtraVarDecorator::initialize
virtual StatusCode initialize() override
Tool initializer.
Definition: DiTauExtraVarDecorator.cxx:26
DiTauExtraVarDecorator::SubjetTrackingInfo::vIsoTracks
std::vector< const xAOD::TrackParticle * > vIsoTracks
Definition: DiTauExtraVarDecorator.h:30
DiTauExtraVarDecorator::m_n_tracks_leadDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_n_tracks_leadDecKey
Definition: DiTauExtraVarDecorator.h:83
TrackParticle.h
DiTauExtraVarDecorator::m_M_track_allDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_M_track_allDecKey
Definition: DiTauExtraVarDecorator.h:98
DiTauExtraVarDecorator::m_ditau_ptDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_ditau_ptDecKey
Definition: DiTauExtraVarDecorator.h:72
DiTauExtraVarDecorator::m_R_isotrackDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_R_isotrackDecKey
Definition: DiTauExtraVarDecorator.h:89
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
DiTauExtraVarDecorator::m_n_isotrackDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_n_isotrackDecKey
Definition: DiTauExtraVarDecorator.h:85
DiTauExtraVarDecorator::m_f_subjet_leadDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_f_subjet_leadDecKey
Definition: DiTauExtraVarDecorator.h:75
DiTauExtraVarDecorator::m_f_isotracksDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_f_isotracksDecKey
Definition: DiTauExtraVarDecorator.h:107
xAOD::DiTauJet_v1
Definition: DiTauJet_v1.h:31
xAOD::DiTauJet_v1::isoTrackLinks
const TrackParticleLinks_t & isoTrackLinks() const
DiTauExtraVarDecorator::n_subjets
int n_subjets(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo) const
Definition: DiTauExtraVarDecorator.cxx:168
DiTauExtraVarDecorator.h
DiTauExtraVarDecorator::f_isotracks
float f_isotracks(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo) const
Definition: DiTauExtraVarDecorator.cxx:411
SG::ConstAccessor::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
DiTauCandidateData
Definition: DiTauCandidateData.h:15
DiTauExtraVarDecorator::m_M_track_coreDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_M_track_coreDecKey
Definition: DiTauExtraVarDecorator.h:95
DiTauExtraVarDecorator::m_d0_leadtrack_sublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_d0_leadtrack_sublDecKey
Definition: DiTauExtraVarDecorator.h:106
xAOD::DiTauJet_v1::subjetPt
float subjetPt(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:91
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
ConstAccessor.h
Helper class to provide constant type-safe access to aux data.
DiTauExtraVarDecorator::m_M_core_leadDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_M_core_leadDecKey
Definition: DiTauExtraVarDecorator.h:96
xAOD::DiTauJet_v1::trackLinks
const TrackParticleLinks_t & trackLinks() const
DiTauExtraVarDecorator::m_R_max_sublDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_R_max_sublDecKey
Definition: DiTauExtraVarDecorator.h:81
DiTauExtraVarDecorator::execute
virtual StatusCode execute(DiTauCandidateData *data, const EventContext &ctx) const override
Execute - called for each Ditau candidate.
Definition: DiTauExtraVarDecorator.cxx:68
DiTauExtraVarDecorator::m_f_subjetsDecKey
SG::WriteDecorHandleKey< xAOD::DiTauJetContainer > m_f_subjetsDecKey
Definition: DiTauExtraVarDecorator.h:77
DiTauExtraVarDecorator::f_core
float f_core(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo, int iSubjet) const
Definition: DiTauExtraVarDecorator.cxx:181
DiTauExtraVarDecorator::R_track_core
float R_track_core(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo) const
Definition: DiTauExtraVarDecorator.cxx:257
TrackParticleContainer.h
DiTauExtraVarDecorator::~DiTauExtraVarDecorator
virtual ~DiTauExtraVarDecorator()
DiTauExtraVarDecorator::DiTauExtraVarDecorator
DiTauExtraVarDecorator(const std::string &type, const std::string &name, const IInterface *parent)
Definition: DiTauExtraVarDecorator.cxx:18
DiTauExtraVarDecorator::R_tracks
float R_tracks(const xAOD::DiTauJet &xDiTau, const DitauTrackingInfo &ditauInfo, int iSubjet) const
Definition: DiTauExtraVarDecorator.cxx:227