CMS 3D CMS Logo

PFRecoTauClusterVariables.cc
Go to the documentation of this file.
2 
3 namespace {
4  struct PFTau_traits {
5  typedef reco::PFTau Tau_t;
6  typedef const std::vector<reco::CandidatePtr>& Ret_t;
7  };
8  struct PATTau_traits {
9  typedef pat::Tau Tau_t;
10  typedef reco::CandidatePtrVector Ret_t;
11  };
12 
13  template <typename T>
14  typename T::Ret_t getGammas_T(const typename T::Tau_t& tau, bool signal) {
15  return typename T::Ret_t();
16  }
18  template <>
19  const std::vector<reco::CandidatePtr>& getGammas_T<PFTau_traits>(const reco::PFTau& tau, bool signal) {
20  if (signal) {
21  return tau.signalGammaCands();
22  }
23  return tau.isolationGammaCands();
24  }
25 
26  template <>
27  reco::CandidatePtrVector getGammas_T<PATTau_traits>(const pat::Tau& tau, bool signal) {
28  if (signal) {
29  return tau.signalGammaCands();
30  }
31  return tau.isolationGammaCands();
32  }
33 
35  bool isInside(float photon_pt, float deta, float dphi) {
36  constexpr double stripEtaAssociationDistance_0p95_p0 = 0.197077;
37  constexpr double stripEtaAssociationDistance_0p95_p1 = 0.658701;
38  constexpr double stripPhiAssociationDistance_0p95_p0 = 0.352476;
39  constexpr double stripPhiAssociationDistance_0p95_p1 = 0.707716;
40  if (photon_pt == 0) {
41  return false;
42  }
43  if ((dphi < 0.3 && dphi < std::max(0.05,
44  stripPhiAssociationDistance_0p95_p0 *
45  std::pow(photon_pt, -stripPhiAssociationDistance_0p95_p1))) &&
46  (deta < 0.15 && deta < std::max(0.05,
47  stripEtaAssociationDistance_0p95_p0 *
48  std::pow(photon_pt, -stripEtaAssociationDistance_0p95_p1)))) {
49  return true;
50  }
51  return false;
52  }
53 } // namespace
54 
55 namespace reco {
56  namespace tau {
59  float LeadingTracknormalizedChi2 = 0;
60  const reco::CandidatePtr& leadingCharged = tau.leadChargedHadrCand();
61  if (leadingCharged.isNonnull()) {
62  const reco::PFCandidate* pfcand = dynamic_cast<const reco::PFCandidate*>(leadingCharged.get());
63  if (pfcand != nullptr) {
64  reco::TrackRef tref = pfcand->trackRef();
65  if (tref.isNonnull()) {
66  LeadingTracknormalizedChi2 = tref->normalizedChi2();
67  }
68  } else {
69  const pat::PackedCandidate* patcand = dynamic_cast<const pat::PackedCandidate*>(leadingCharged.get());
70  if (patcand != nullptr && patcand->hasTrackDetails()) {
71  LeadingTracknormalizedChi2 = patcand->pseudoTrack().normalizedChi2();
72  }
73  }
74  }
75  return LeadingTracknormalizedChi2;
76  }
78  float eratio(const reco::PFTau& tau) {
79  float ecal_en_in_signal_pf_cands = 0;
80  float hcal_en_in_signal_pf_cands = 0;
81  for (const auto& signal_cand : tau.signalCands()) {
82  const reco::PFCandidate* signal_pfcand = dynamic_cast<const reco::PFCandidate*>(signal_cand.get());
83  if (signal_pfcand != nullptr) {
84  ecal_en_in_signal_pf_cands += signal_pfcand->ecalEnergy();
85  hcal_en_in_signal_pf_cands += signal_pfcand->hcalEnergy();
86  }
87  // TauReco@MiniAOD: recalculate for PackedCandidate if added to MiniAOD event content
88  }
89  float total = ecal_en_in_signal_pf_cands + hcal_en_in_signal_pf_cands;
90  if (total == 0.) {
91  return -1.;
92  }
93  return ecal_en_in_signal_pf_cands / total;
94  }
95  float eratio(const pat::Tau& tau) {
96  float ecal_en_in_signal_cands = tau.ecalEnergy();
97  float hcal_en_in_signal_cands = tau.hcalEnergy();
98  float total = ecal_en_in_signal_cands + hcal_en_in_signal_cands;
99  if (total == 0.) {
100  return -1.;
101  }
102  return ecal_en_in_signal_cands / total;
103  }
106  template <typename T>
107  float pt_weighted_dx_T(const typename T::Tau_t& tau, int mode, int var, int decaymode) {
108  float sum_pt = 0.;
109  float sum_dx_pt = 0.;
110  float signalrad = std::max(0.05, std::min(0.1, 3. / std::max(1., tau.pt())));
111  int is3prong = (decaymode == 10);
112  const auto& cands = getGammas_T<T>(tau, mode < 2);
113  for (const auto& cand : cands) {
114  // only look at electrons/photons with pT > 0.5
115  if (cand->pt() < 0.5) {
116  continue;
117  }
118  float dr = reco::deltaR(cand->eta(), cand->phi(), tau.eta(), tau.phi());
119  float deta = std::abs(cand->eta() - tau.eta());
120  float dphi = std::abs(reco::deltaPhi(cand->phi(), tau.phi()));
121  float pt = cand->pt();
122  bool flag = isInside(pt, deta, dphi);
123  if (is3prong == 0) {
124  if (mode == 2 || (mode == 0 && dr < signalrad) || (mode == 1 && dr > signalrad)) {
125  sum_pt += pt;
126  if (var == 0)
127  sum_dx_pt += pt * dr;
128  else if (var == 1)
129  sum_dx_pt += pt * deta;
130  else if (var == 2)
131  sum_dx_pt += pt * dphi;
132  }
133  } else if (is3prong == 1) {
134  if ((mode == 2 && flag == false) || (mode == 1 && flag == true) || mode == 0) {
135  sum_pt += pt;
136  if (var == 0)
137  sum_dx_pt += pt * dr;
138  else if (var == 1)
139  sum_dx_pt += pt * deta;
140  else if (var == 2)
141  sum_dx_pt += pt * dphi;
142  }
143  }
144  }
145  if (sum_pt > 0.) {
146  return sum_dx_pt / sum_pt;
147  }
148  return 0.;
149  }
150  float pt_weighted_dx(const reco::PFTau& tau, int mode, int var, int decaymode) {
151  return pt_weighted_dx_T<PFTau_traits>(tau, mode, var, decaymode);
152  }
153  float pt_weighted_dx(const pat::Tau& tau, int mode, int var, int decaymode) {
154  return pt_weighted_dx_T<PATTau_traits>(tau, mode, var, decaymode);
155  }
157  unsigned int n_photons_total(const reco::PFTau& tau) {
158  unsigned int n_photons = 0;
159  for (auto& cand : tau.signalGammaCands()) {
160  if (cand->pt() > 0.5)
161  ++n_photons;
162  }
163  for (auto& cand : tau.isolationGammaCands()) {
164  if (cand->pt() > 0.5)
165  ++n_photons;
166  }
167  return n_photons;
168  }
169  unsigned int n_photons_total(const pat::Tau& tau) {
170  unsigned int n_photons = 0;
171  for (auto& cand : tau.signalGammaCands()) {
172  if (cand->pt() > 0.5)
173  ++n_photons;
174  }
175  for (auto& cand : tau.isolationGammaCands()) {
176  if (cand->pt() > 0.5)
177  ++n_photons;
178  }
179  return n_photons;
180  }
181 
182  bool fillIsoMVARun2Inputs(float* mvaInput,
183  const pat::Tau& tau,
184  int mvaOpt,
185  const std::string& nameCharged,
186  const std::string& nameNeutral,
187  const std::string& namePu,
188  const std::string& nameOutside,
189  const std::string& nameFootprint) {
190  int tauDecayMode = tau.decayMode();
191  const float mTau = 1.77682;
192 
193  if (((mvaOpt == kOldDMwoLT || mvaOpt == kOldDMwLT || mvaOpt == kDBoldDMwLT || mvaOpt == kPWoldDMwLT ||
194  mvaOpt == kDBoldDMwLTwGJ) &&
195  (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 10)) ||
198  (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 5 || tauDecayMode == 6 ||
199  tauDecayMode == 10 || tauDecayMode == 11))) {
200  float chargedIsoPtSum = tau.tauID(nameCharged);
201  float neutralIsoPtSum = tau.tauID(nameNeutral);
202  float puCorrPtSum = tau.tauID(namePu);
203  float photonPtSumOutsideSignalCone = tau.tauID(nameOutside);
204  float footprintCorrection = tau.tauID(nameFootprint);
205 
206  float decayDistX = tau.flightLength().x();
207  float decayDistY = tau.flightLength().y();
208  float decayDistZ = tau.flightLength().z();
209  float decayDistMag = std::sqrt(decayDistX * decayDistX + decayDistY * decayDistY + decayDistZ * decayDistZ);
210 
211  // --- The following 5 variables differ slightly between AOD & MiniAOD
212  // because they are recomputed using packedCandidates saved in the tau
213  float nPhoton = reco::tau::n_photons_total(tau);
214  float ptWeightedDetaStrip = reco::tau::pt_weighted_deta_strip(tau, tauDecayMode);
215  float ptWeightedDphiStrip = reco::tau::pt_weighted_dphi_strip(tau, tauDecayMode);
216  float ptWeightedDrSignal = reco::tau::pt_weighted_dr_signal(tau, tauDecayMode);
217  float ptWeightedDrIsolation = reco::tau::pt_weighted_dr_iso(tau, tauDecayMode);
218  // ---
219  float leadingTrackChi2 = tau.leadingTrackNormChi2();
220  float eRatio = reco::tau::eratio(tau);
221 
222  // Difference between measured and maximally allowed Gottfried-Jackson angle
223  float gjAngleDiff = -999;
224  if (tauDecayMode == 10) {
225  double mAOne = tau.p4().M();
226  double pAOneMag = tau.p();
227  double argumentThetaGJmax = (std::pow(mTau, 2) - std::pow(mAOne, 2)) / (2 * mTau * pAOneMag);
228  double argumentThetaGJmeasured =
229  (tau.p4().px() * decayDistX + tau.p4().py() * decayDistY + tau.p4().pz() * decayDistZ) /
230  (pAOneMag * decayDistMag);
231  if (std::abs(argumentThetaGJmax) <= 1. && std::abs(argumentThetaGJmeasured) <= 1.) {
232  double thetaGJmax = std::asin(argumentThetaGJmax);
233  double thetaGJmeasured = std::acos(argumentThetaGJmeasured);
234  gjAngleDiff = thetaGJmeasured - thetaGJmax;
235  }
236  }
237 
238  if (mvaOpt == kDBnewDMwLTwGJPhase2) {
239  mvaInput[0] = tau.pt();
240  mvaInput[1] = std::abs(tau.eta());
241  mvaInput[2] = chargedIsoPtSum; //tauID("chargedIsoPtSum");
242  mvaInput[3] = neutralIsoPtSum; //tauID("neutralIsoPtSum");
243  mvaInput[4] = puCorrPtSum; //tauID("puCorrPtSum");
244  mvaInput[5] = photonPtSumOutsideSignalCone; //tauID("photonPtSumOutsideSignalCone");
245  mvaInput[6] = tauDecayMode; //tau.decayMode();
246  mvaInput[7] = tau.signalGammaCands().size();
247  mvaInput[8] = tau.isolationGammaCands().size();
248 
249  float sigCands_pt = 0.;
250  float sigCands_dr, sigCands_deta, sigCands_dphi;
251  sigCands_dr = sigCands_deta = sigCands_dphi = 0.;
252  for (const auto& j : tau.signalGammaCands()) {
253  const float dr = reco::deltaR(tau, *j);
254  const float deta = std::abs(tau.eta() - j->eta());
255  const float dphi = std::abs(reco::deltaPhi(tau.phi(), j->phi()));
256  const float pt_ = j->pt();
257  sigCands_dr += dr * pt_;
258  sigCands_deta += deta * pt_;
259  sigCands_dphi += dphi * pt_;
260  sigCands_pt += pt_;
261  }
262  if (sigCands_pt > 0.) {
263  sigCands_dr = sigCands_dr / sigCands_pt;
264  sigCands_deta = sigCands_deta / sigCands_pt;
265  sigCands_dphi = sigCands_dphi / sigCands_pt;
266  } else {
267  sigCands_dr = sigCands_deta = sigCands_dphi = -0.1;
268  }
269  float isoCands_pt = 0.;
270  float isoCands_dr, isoCands_deta, isoCands_dphi;
271  isoCands_dr = isoCands_deta = isoCands_dphi = 0.;
272  for (const auto& j : tau.isolationGammaCands()) {
273  const float dr = reco::deltaR(tau, *j);
274  const float deta = std::abs(tau.eta() - j->eta());
275  const float dphi = std::abs(reco::deltaPhi(tau.phi(), j->phi()));
276  const float pt_ = j->pt();
277  isoCands_dr += dr * pt_;
278  isoCands_deta += deta * pt_;
279  isoCands_dphi += dphi * pt_;
280  isoCands_pt += pt_;
281  }
282  if (isoCands_pt > 0.) {
283  isoCands_dr = isoCands_dr / isoCands_pt;
284  isoCands_deta = isoCands_deta / isoCands_pt;
285  isoCands_dphi = isoCands_dphi / isoCands_pt;
286  } else {
287  isoCands_dr = isoCands_deta = isoCands_dphi = -0.1;
288  }
289  mvaInput[9] = isoCands_deta;
290  mvaInput[10] = isoCands_dphi;
291  mvaInput[11] = isoCands_dr;
292  mvaInput[12] = sigCands_deta;
293  mvaInput[13] = sigCands_dphi;
294  mvaInput[14] = sigCands_dr;
295 
296  float e = tau.hcalEnergy() + tau.ecalEnergy();
297  e > 0. ? e = tau.ecalEnergy() / e : e = -1.;
298  mvaInput[15] = e;
299  mvaInput[16] = tau.dxy() >= 0. ? +1 : -1;
300  mvaInput[17] = sqrt(std::abs(tau.dxy()));
301  mvaInput[18] = std::abs(tau.dxy_Sig());
302  mvaInput[19] = tau.ip3d() >= 0. ? +1 : -1;
303  mvaInput[20] = sqrt(std::abs(tau.ip3d()));
304  mvaInput[21] = std::abs(tau.ip3d_Sig());
305  mvaInput[22] = (tau.hasSecondaryVertex()) ? 1. : 0.;
306  mvaInput[23] = decayDistMag; //sqrt(tau.flightLength().Mag2());
307  mvaInput[24] = tau.flightLengthSig();
308  mvaInput[25] = leadingTrackChi2; //tau.leadingTrackNormChi2();
309 
310  float thetaGJmax, thetaGJ;
311  if (decayDistMag > 0. && tau.hasSecondaryVertex()) {
312  const float mAOne = tau.p4().M();
313  const float pAOneMag = tau.p();
314  thetaGJmax = (mTau * mTau - mAOne * mAOne) / (2. * mTau * pAOneMag);
315  thetaGJmax = asin(thetaGJmax);
316  thetaGJ = (tau.px() * tau.flightLength().x() + tau.py() * tau.flightLength().y() +
317  tau.pz() * tau.flightLength().z()) /
318  (pAOneMag * decayDistMag);
319  thetaGJ = acos(thetaGJ);
320  if (std::isnan(thetaGJ))
321  thetaGJ = -16.;
322  if (std::isnan(thetaGJmax))
323  thetaGJmax = -11.;
324  } else {
325  thetaGJ = -15.;
326  thetaGJmax = -10.;
327  }
328  mvaInput[26] = thetaGJ - thetaGJmax;
329 
330  mvaInput[27] = 0;
331  mvaInput[28] = 10.;
332  mvaInput[29] = 10.;
333  if (tau.leadChargedHadrCand().isNonnull()) {
334  if (tau.leadChargedHadrCand()->bestTrack()) {
335  const float trackdxy = tau.leadChargedHadrCand()->bestTrack()->dxy();
336  const float trackdxy_err = tau.leadChargedHadrCand()->bestTrack()->dxyError();
337  mvaInput[27] = trackdxy >= 0. ? +1 : -1;
338  mvaInput[28] = sqrt(std::abs(trackdxy));
339  mvaInput[29] = std::abs(trackdxy / trackdxy_err);
340  }
341  }
342  }
343  if (mvaOpt == kOldDMwoLT || mvaOpt == kNewDMwoLT) {
344  mvaInput[0] = std::log(std::max(1.f, (float)tau.pt()));
345  mvaInput[1] = std::abs((float)tau.eta());
346  mvaInput[2] = std::log(std::max(1.e-2f, chargedIsoPtSum));
347  mvaInput[3] = std::log(std::max(1.e-2f, neutralIsoPtSum - 0.125f * puCorrPtSum));
348  mvaInput[4] = std::log(std::max(1.e-2f, puCorrPtSum));
349  mvaInput[5] = tauDecayMode;
350  } else if (mvaOpt == kOldDMwLT || mvaOpt == kNewDMwLT) {
351  mvaInput[0] = std::log(std::max(1.f, (float)tau.pt()));
352  mvaInput[1] = std::abs((float)tau.eta());
353  mvaInput[2] = std::log(std::max(1.e-2f, chargedIsoPtSum));
354  mvaInput[3] = std::log(std::max(1.e-2f, neutralIsoPtSum - 0.125f * puCorrPtSum));
355  mvaInput[4] = std::log(std::max(1.e-2f, puCorrPtSum));
356  mvaInput[5] = tauDecayMode;
357  mvaInput[6] = std::copysign(+1.f, tau.dxy());
358  mvaInput[7] = std::sqrt(std::min(1.f, std::abs(tau.dxy())));
359  mvaInput[8] = std::min(10.f, std::abs(tau.dxy_Sig()));
360  mvaInput[9] = (tau.hasSecondaryVertex()) ? 1. : 0.;
361  mvaInput[10] = std::sqrt(decayDistMag);
362  mvaInput[11] = std::min(10.f, tau.flightLengthSig());
363  } else if (mvaOpt == kDBoldDMwLT || mvaOpt == kDBnewDMwLT) {
364  mvaInput[0] = std::log(std::max(1.f, (float)tau.pt()));
365  mvaInput[1] = std::abs((float)tau.eta());
366  mvaInput[2] = std::log(std::max(1.e-2f, chargedIsoPtSum));
367  mvaInput[3] = std::log(std::max(1.e-2f, neutralIsoPtSum));
368  mvaInput[4] = std::log(std::max(1.e-2f, puCorrPtSum));
369  mvaInput[5] = std::log(std::max(1.e-2f, photonPtSumOutsideSignalCone));
370  mvaInput[6] = tauDecayMode;
371  mvaInput[7] = std::min(30.f, nPhoton);
372  mvaInput[8] = std::min(0.5f, ptWeightedDetaStrip);
373  mvaInput[9] = std::min(0.5f, ptWeightedDphiStrip);
374  mvaInput[10] = std::min(0.5f, ptWeightedDrSignal);
375  mvaInput[11] = std::min(0.5f, ptWeightedDrIsolation);
376  mvaInput[12] = std::min(100.f, leadingTrackChi2);
377  mvaInput[13] = std::min(1.f, eRatio);
378  mvaInput[14] = std::copysign(+1.f, tau.dxy());
379  mvaInput[15] = std::sqrt(std::min(1.f, std::abs(tau.dxy())));
380  mvaInput[16] = std::min(10.f, std::abs(tau.dxy_Sig()));
381  mvaInput[17] = std::copysign(+1.f, tau.ip3d());
382  mvaInput[18] = std::sqrt(std::min(1.f, std::abs(tau.ip3d())));
383  mvaInput[19] = std::min(10.f, std::abs(tau.ip3d_Sig()));
384  mvaInput[20] = (tau.hasSecondaryVertex()) ? 1. : 0.;
385  mvaInput[21] = std::sqrt(decayDistMag);
386  mvaInput[22] = std::min(10.f, tau.flightLengthSig());
387  } else if (mvaOpt == kPWoldDMwLT || mvaOpt == kPWnewDMwLT) {
388  mvaInput[0] = std::log(std::max(1.f, (float)tau.pt()));
389  mvaInput[1] = std::abs((float)tau.eta());
390  mvaInput[2] = std::log(std::max(1.e-2f, chargedIsoPtSum));
391  mvaInput[3] = std::log(std::max(1.e-2f, neutralIsoPtSum));
392  mvaInput[4] = std::log(std::max(1.e-2f, footprintCorrection));
393  mvaInput[5] = std::log(std::max(1.e-2f, photonPtSumOutsideSignalCone));
394  mvaInput[6] = tauDecayMode;
395  mvaInput[7] = std::min(30.f, nPhoton);
396  mvaInput[8] = std::min(0.5f, ptWeightedDetaStrip);
397  mvaInput[9] = std::min(0.5f, ptWeightedDphiStrip);
398  mvaInput[10] = std::min(0.5f, ptWeightedDrSignal);
399  mvaInput[11] = std::min(0.5f, ptWeightedDrIsolation);
400  mvaInput[12] = std::min(100.f, leadingTrackChi2);
401  mvaInput[13] = std::min(1.f, eRatio);
402  mvaInput[14] = std::copysign(+1.f, tau.dxy());
403  mvaInput[15] = std::sqrt(std::min(1.f, std::abs(tau.dxy())));
404  mvaInput[16] = std::min(10.f, std::abs(tau.dxy_Sig()));
405  mvaInput[17] = std::copysign(+1.f, tau.ip3d());
406  mvaInput[18] = std::sqrt(std::min(1.f, std::abs(tau.ip3d())));
407  mvaInput[19] = std::min(10.f, std::abs(tau.ip3d_Sig()));
408  mvaInput[20] = (tau.hasSecondaryVertex()) ? 1. : 0.;
409  mvaInput[21] = std::sqrt(decayDistMag);
410  mvaInput[22] = std::min(10.f, tau.flightLengthSig());
411  } else if (mvaOpt == kDBoldDMwLTwGJ || mvaOpt == kDBnewDMwLTwGJ) {
412  mvaInput[0] = std::log(std::max(1.f, (float)tau.pt()));
413  mvaInput[1] = std::abs((float)tau.eta());
414  mvaInput[2] = std::log(std::max(1.e-2f, chargedIsoPtSum));
415  mvaInput[3] = std::log(std::max(1.e-2f, neutralIsoPtSum));
416  mvaInput[4] = std::log(std::max(1.e-2f, puCorrPtSum));
417  mvaInput[5] = std::log(std::max(1.e-2f, photonPtSumOutsideSignalCone));
418  mvaInput[6] = tauDecayMode;
419  mvaInput[7] = std::min(30.f, nPhoton);
420  mvaInput[8] = std::min(0.5f, ptWeightedDetaStrip);
421  mvaInput[9] = std::min(0.5f, ptWeightedDphiStrip);
422  mvaInput[10] = std::min(0.5f, ptWeightedDrSignal);
423  mvaInput[11] = std::min(0.5f, ptWeightedDrIsolation);
424  mvaInput[12] = std::min(1.f, eRatio);
425  mvaInput[13] = std::copysign(+1.f, tau.dxy());
426  mvaInput[14] = std::sqrt(std::min(1.f, std::abs(tau.dxy())));
427  mvaInput[15] = std::min(10.f, std::abs(tau.dxy_Sig()));
428  mvaInput[16] = std::copysign(+1.f, tau.ip3d());
429  mvaInput[17] = std::sqrt(std::min(1.f, std::abs(tau.ip3d())));
430  mvaInput[18] = std::min(10.f, std::abs(tau.ip3d_Sig()));
431  mvaInput[19] = (tau.hasSecondaryVertex()) ? 1. : 0.;
432  mvaInput[20] = std::sqrt(decayDistMag);
433  mvaInput[21] = std::min(10.f, tau.flightLengthSig());
434  mvaInput[22] = std::max(-1.f, gjAngleDiff);
435  }
436 
437  return true;
438  }
439  return false;
440  }
441 
442  } // namespace tau
443 } // namespace reco
reco::tau::pt_weighted_deta_strip
float pt_weighted_deta_strip(const reco::PFTau &tau, int dm)
Definition: PFRecoTauClusterVariables.h:36
pat::PackedCandidate::hasTrackDetails
bool hasTrackDetails() const
Return true if a bestTrack can be extracted from this Candidate.
Definition: PackedCandidate.h:787
reco::tau::kOldDMwoLT
Definition: PFRecoTauClusterVariables.h:59
reco::tau::fillIsoMVARun2Inputs
bool fillIsoMVARun2Inputs(float *mvaInput, const pat::Tau &tau, int mvaOpt, const std::string &nameCharged, const std::string &nameNeutral, const std::string &namePu, const std::string &nameOutside, const std::string &nameFootprint)
Definition: PFRecoTauClusterVariables.cc:182
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
metsig::tau
Definition: SignAlgoResolutions.h:49
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
min
T min(T a, T b)
Definition: MathUtil.h:58
reco::deltaPhi
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
reco::tau::eratio
float eratio(const reco::PFTau &tau)
return ratio of energy in ECAL over sum of energy in ECAL and HCAL
Definition: PFRecoTauClusterVariables.cc:78
pat::Tau
Analysis-level tau class.
Definition: Tau.h:53
reco::tau::kDBoldDMwLT
Definition: PFRecoTauClusterVariables.h:63
ALCARECOPromptCalibProdSiPixelAli0T_cff.mode
mode
Definition: ALCARECOPromptCalibProdSiPixelAli0T_cff.py:96
reco::PFTau
Definition: PFTau.h:36
edm::Ptr::get
T const * get() const
Returns C++ pointer to the item.
Definition: Ptr.h:139
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
edm::Ref< TrackCollection >
pfDeepBoostedJetPreprocessParams_cfi.pfcand
pfcand
Definition: pfDeepBoostedJetPreprocessParams_cfi.py:8
trigObjTnPSource_cfi.var
var
Definition: trigObjTnPSource_cfi.py:21
PFRecoTauClusterVariables.h
reco::tau::pt_weighted_dx
float pt_weighted_dx(const reco::PFTau &tau, int mode=0, int var=0, int decaymode=-1)
Definition: PFRecoTauClusterVariables.cc:150
reco::tau::kNewDMwLT
Definition: PFRecoTauClusterVariables.h:62
reco::tau::pt_weighted_dphi_strip
float pt_weighted_dphi_strip(const reco::PFTau &tau, int dm)
Definition: PFRecoTauClusterVariables.h:44
edm::PtrVector< Candidate >
runTauDisplay.decaymode
decaymode
Definition: runTauDisplay.py:327
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
reco::tau::kDBnewDMwLTwGJPhase2
Definition: PFRecoTauClusterVariables.h:69
CommonMethods.isnan
def isnan(num)
Definition: CommonMethods.py:98
reco::tau::kDBnewDMwLTwGJ
Definition: PFRecoTauClusterVariables.h:68
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
reco::tau::kPWoldDMwLT
Definition: PFRecoTauClusterVariables.h:65
pat::PackedCandidate::pseudoTrack
virtual const reco::Track & pseudoTrack() const
Definition: PackedCandidate.h:772
HLT_FULL_cff.cands
cands
Definition: HLT_FULL_cff.py:15142
reco::tau::lead_track_chi2
float lead_track_chi2(const reco::PFTau &tau)
return chi2 of the leading track ==> deprecated? <==
Definition: PFRecoTauClusterVariables.cc:58
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
pat::PackedCandidate
Definition: PackedCandidate.h:22
reco::tau::kDBnewDMwLT
Definition: PFRecoTauClusterVariables.h:64
edm::Ref::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
reco::tau::n_photons_total
unsigned int n_photons_total(const reco::PFTau &tau)
return total number of pf photon candidates with pT>500 MeV, which are associated to signal
Definition: PFRecoTauClusterVariables.cc:157
cand
Definition: decayParser.h:32
reco::tau::kDBoldDMwLTwGJ
Definition: PFRecoTauClusterVariables.h:67
reco::TrackBase::normalizedChi2
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:593
reco::PFCandidate::ecalEnergy
double ecalEnergy() const
return corrected Ecal energy
Definition: PFCandidate.h:221
edm::Ptr< Candidate >
reco::PFCandidate::hcalEnergy
double hcalEnergy() const
return corrected Hcal energy
Definition: PFCandidate.h:233
flavorHistoryFilter_cfi.dr
dr
Definition: flavorHistoryFilter_cfi.py:37
reco::tau::pt_weighted_dr_signal
float pt_weighted_dr_signal(const reco::PFTau &tau, int dm)
Definition: PFRecoTauClusterVariables.h:32
reco::tau::kNewDMwoLT
Definition: PFRecoTauClusterVariables.h:61
reco::tau::pt_weighted_dr_iso
float pt_weighted_dr_iso(const reco::PFTau &tau, int dm)
Definition: PFRecoTauClusterVariables.h:52
reco::deltaR
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
edm::Ptr::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: Ptr.h:146
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
dqmMemoryStats.total
total
Definition: dqmMemoryStats.py:152
reco::PFCandidate
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:41
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
taus_updatedMVAIds_cff.mvaOpt
mvaOpt
Definition: taus_updatedMVAIds_cff.py:19
reco::tau::kOldDMwLT
Definition: PFRecoTauClusterVariables.h:60
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
reco::tau::kPWnewDMwLT
Definition: PFRecoTauClusterVariables.h:66
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
reco::tau::pt_weighted_dx_T
float pt_weighted_dx_T(const typename T::Tau_t &tau, int mode, int var, int decaymode)
Definition: PFRecoTauClusterVariables.cc:107
RemoveAddSevLevel.flag
flag
Definition: RemoveAddSevLevel.py:116
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37