CMS 3D CMS Logo

SoftLepton.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: SoftLepton
4 // Class: SoftLepton
5 //
13 // Original Author: fwyzard
14 // Created: Wed Oct 18 18:02:07 CEST 2006
15 
16 #include <memory>
17 #include <string>
18 #include <utility>
19 #include <cmath>
20 
23 
24 // ROOT::Math vectors (aka math::XYZVector)
26 #include "Math/GenVector/PxPyPzM4D.h"
27 #include "Math/GenVector/VectorUtil.h"
28 #include "Math/GenVector/Boost.h"
29 
31 
36 #include "SoftLepton.h"
37 
38 enum AxisType {
39  AXIS_CALORIMETRIC = 0, // use the calorimietric jet axis
40  AXIS_CHARGED_AVERAGE = 1, // refine jet axis using charged tracks: use a pT-weighted average of (eta, phi)
41  AXIS_CHARGED_AVERAGE_NOLEPTON = 2, // as above, without the tagging lepton track
42  AXIS_CHARGED_SUM = 3, // refine jet axis using charged tracks: use the sum of tracks momentum
43  AXIS_CHARGED_SUM_NOLEPTON = 4, // as above, without the tagging lepton track
44  AXIS_CALORIMETRIC_NOLEPTON = 5 // use the calorimetric jet axis minus the lepton momentum
45 };
46 
47 using namespace std;
48 using namespace edm;
49 using namespace reco;
50 using namespace ROOT::Math::VectorUtil;
51 
55 
56 // ------------ static copy of the nominal beamspot --------------------------------------
58  reco::Vertex::Point(0, 0, 0),
59  reco::Vertex::Error(ROOT::Math::SVector<double, 6>(0.0015 * 0.0015, // 0.0, 0.0
60  0.0,
61  0.0015 * 0.0015, // 0.0
62  0.0,
63  0.0,
64  15. * 15.)),
65  1,
66  1,
67  0);
68 
69 // ------------ c'tor --------------------------------------------------------------------
71  : m_jets(iConfig.getParameter<edm::InputTag>("jets")),
72  token_jtas(mayConsume<reco::JetTracksAssociationCollection>(iConfig.getParameter<edm::InputTag>("jets"))),
73  token_jets(mayConsume<edm::View<reco::Jet> >(iConfig.getParameter<edm::InputTag>("jets"))),
74  token_primaryVertex(consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("primaryVertex"))),
75  m_leptons(iConfig.getParameter<edm::InputTag>("leptons")),
76  token_gsfElectrons(mayConsume<GsfElectronView>(iConfig.getParameter<edm::InputTag>("leptons"))),
77  token_electrons(mayConsume<ElectronView>(iConfig.getParameter<edm::InputTag>("leptons"))),
78  token_pfElectrons(mayConsume<reco::PFCandidateCollection>(iConfig.getParameter<edm::InputTag>("leptons"))),
79  token_muons(mayConsume<MuonView>(iConfig.getParameter<edm::InputTag>("leptons"))),
80  token_tracks(mayConsume<edm::View<reco::Track> >(iConfig.getParameter<edm::InputTag>("leptons"))),
81  m_leptonCands(iConfig.exists("leptonCands") ? iConfig.getParameter<edm::InputTag>("leptonCands")
82  : edm::InputTag()),
83  token_leptonCands(mayConsume<edm::ValueMap<float> >(
84  iConfig.exists("leptonCands") ? iConfig.getParameter<edm::InputTag>("leptonCands") : edm::InputTag())),
85  m_leptonId(iConfig.exists("leptonId") ? iConfig.getParameter<edm::InputTag>("leptonId") : edm::InputTag()),
86  token_leptonId(mayConsume<edm::ValueMap<float> >(
87  iConfig.exists("leptonId") ? iConfig.getParameter<edm::InputTag>("leptonId") : edm::InputTag())),
88  m_transientTrackBuilder(nullptr),
89  m_refineJetAxis(iConfig.getParameter<unsigned int>("refineJetAxis")),
90  m_deltaRCut(iConfig.getParameter<double>("leptonDeltaRCut")),
91  m_chi2Cut(iConfig.getParameter<double>("leptonChi2Cut")),
92  m_muonSelection((muon::SelectionType)iConfig.getParameter<unsigned int>("muonSelection")) {
93  produces<reco::SoftLeptonTagInfoCollection>();
94 }
95 
96 // ------------ d'tor --------------------------------------------------------------------
98 
99 // ------------ method called once per event during the event loop -----------------------
101  // grab a TransientTrack helper from the Event Setup
103  setup.get<TransientTrackRecord>().get("TransientTrackBuilder", builder);
104  m_transientTrackBuilder = builder.product();
105 
106  // input objects
107 
108  // input jets (and possibly tracks)
109  ProductID jets_id;
110  std::vector<edm::RefToBase<reco::Jet> > jets;
111  std::vector<reco::TrackRefVector> tracks;
112  do {
113  {
114  // look for a JetTracksAssociationCollection
116  event.getByToken(token_jtas, h_jtas);
117  if (h_jtas.isValid()) {
118  unsigned int size = h_jtas->size();
119  jets.resize(size);
120  tracks.resize(size);
121  for (unsigned int i = 0; i < size; ++i) {
122  jets[i] = (*h_jtas)[i].first;
123  tracks[i] = (*h_jtas)[i].second;
124  }
125  break;
126  }
127  }
128  { // else...
129  // look for a View<Jet>
131  event.getByToken(token_jets, h_jets);
132  if (h_jets.isValid()) {
133  unsigned int size = h_jets->size();
134  jets.resize(size);
135  tracks.resize(size);
136  for (unsigned int i = 0; i < h_jets->size(); i++)
137  jets[i] = h_jets->refAt(i);
138  break;
139  }
140  }
141  { // else...
143  << "Object " << m_jets
144  << " of type among (\"reco::JetTracksAssociationCollection\", \"edm::View<reco::Jet>\") not found";
145  }
146  } while (false);
147 
148  // input primary vetex
150  Handle<reco::VertexCollection> h_primaryVertex;
151  event.getByToken(token_primaryVertex, h_primaryVertex);
152  if (h_primaryVertex.isValid() and not h_primaryVertex->empty())
153  vertex = h_primaryVertex->front();
154  else
155  // fall back to nominal beam spot
157 
158  // input leptons (can be of different types)
160 
161  Handle<edm::ValueMap<float> > h_leptonCands;
162  bool haveLeptonCands = !(m_leptonCands == edm::InputTag());
163  if (haveLeptonCands)
164  event.getByToken(token_leptonCands, h_leptonCands);
165 
166  // try to access the input collection as a collection of GsfElectrons, Muons or Tracks
167 
169  do {
170  {
171  // look for View<GsfElectron>
172  Handle<GsfElectronView> h_electrons;
173  event.getByToken(token_gsfElectrons, h_electrons);
174 
175  if (h_electrons.isValid()) {
176  leptonId = SoftLeptonProperties::Quality::egammaElectronId;
177  for (GsfElectronView::const_iterator electron = h_electrons->begin(); electron != h_electrons->end();
178  ++electron) {
179  LeptonIds &id = leptons[reco::TrackBaseRef(electron->gsfTrack())];
180  id[SoftLeptonProperties::Quality::pfElectronId] = electron->mva_e_pi();
181  if (haveLeptonCands)
182  id[SoftLeptonProperties::Quality::btagElectronCands] =
183  (*h_leptonCands)[h_electrons->refAt(electron - h_electrons->begin())];
184  }
185  break;
186  }
187  }
188  { // else
189  // look for View<Electron>
190  // FIXME: is this obsolete?
191  Handle<ElectronView> h_electrons;
192  event.getByToken(token_electrons, h_electrons);
193  if (h_electrons.isValid()) {
194  leptonId = SoftLeptonProperties::Quality::egammaElectronId;
195  for (ElectronView::const_iterator electron = h_electrons->begin(); electron != h_electrons->end(); ++electron) {
196  LeptonIds &id = leptons[reco::TrackBaseRef(electron->track())];
197  if (haveLeptonCands)
198  id[SoftLeptonProperties::Quality::btagElectronCands] =
199  (*h_leptonCands)[h_electrons->refAt(electron - h_electrons->begin())];
200  }
201  break;
202  }
203  }
204  { // else
205  // look for PFElectrons
206  // FIXME: is this obsolete?
208  event.getByToken(token_pfElectrons, h_electrons);
209  if (h_electrons.isValid()) {
210  leptonId = SoftLeptonProperties::Quality::egammaElectronId;
211  for (reco::PFCandidateCollection::const_iterator electron = h_electrons->begin();
212  electron != h_electrons->end();
213  ++electron) {
214  LeptonIds *id;
215  if (electron->gsfTrackRef().isNonnull())
216  id = &leptons[reco::TrackBaseRef(electron->gsfTrackRef())];
217  else if (electron->trackRef().isNonnull())
218  id = &leptons[reco::TrackBaseRef(electron->trackRef())];
219  else
220  continue;
221  (*id)[SoftLeptonProperties::Quality::pfElectronId] = electron->mva_e_pi();
222  if (haveLeptonCands)
223  (*id)[SoftLeptonProperties::Quality::btagElectronCands] =
224  (*h_leptonCands)[reco::PFCandidateRef(h_electrons, electron - h_electrons->begin())];
225  }
226  break;
227  }
228  }
229  { // else
230  // look for View<Muon>
231  Handle<MuonView> h_muons;
232  event.getByToken(token_muons, h_muons);
233  if (h_muons.isValid()) {
234  for (MuonView::const_iterator muon = h_muons->begin(); muon != h_muons->end(); ++muon) {
235  // FIXME -> turn this selection into a muonCands input?
237  LeptonIds *id;
238  if (muon->globalTrack().isNonnull())
239  id = &leptons[reco::TrackBaseRef(muon->globalTrack())];
240  else if (muon->innerTrack().isNonnull())
241  id = &leptons[reco::TrackBaseRef(muon->innerTrack())];
242  else if (muon->outerTrack().isNonnull())
243  // does this makes sense ?
244  id = &leptons[reco::TrackBaseRef(muon->outerTrack())];
245  else
246  continue;
247  if (haveLeptonCands)
248  (*id)[SoftLeptonProperties::Quality::btagMuonCands] =
249  (*h_leptonCands)[h_muons->refAt(muon - h_muons->begin())];
250  }
251  }
252  break;
253  }
254  }
255  { // else
256  // look for edm::View<Track>
258  event.getByToken(token_tracks, h_tracks);
259  if (h_tracks.isValid()) {
260  for (unsigned int i = 0; i < h_tracks->size(); i++) {
261  LeptonIds &id = leptons[h_tracks->refAt(i)];
262  if (haveLeptonCands)
263  id[SoftLeptonProperties::Quality::btagLeptonCands] = (*h_leptonCands)[h_tracks->refAt(i)];
264  }
265  break;
266  }
267  }
268  { // else
269  throw edm::Exception(edm::errors::NotFound) << "Object " << m_leptons
270  << " of type among (\"edm::View<reco::GsfElectron>\", "
271  "\"edm::View<reco::Muon>\", \"edm::View<reco::Track>\") !found";
272  }
273  } while (false);
274 
275  if (!(m_leptonId == edm::InputTag())) {
276  Handle<edm::ValueMap<float> > h_leptonId;
277  event.getByToken(token_leptonId, h_leptonId);
278 
279  for (Leptons::iterator lepton = leptons.begin(); lepton != leptons.end(); ++lepton)
280  lepton->second[leptonId] = (*h_leptonId)[lepton->first];
281  }
282 
283  // output collections
284  auto outputCollection = std::make_unique<reco::SoftLeptonTagInfoCollection>();
285  for (unsigned int i = 0; i < jets.size(); ++i) {
287  outputCollection->push_back(result);
288  }
289  event.put(std::move(outputCollection));
290 }
291 
292 // ---------------------------------------------------------------------------------------
295  const Leptons &leptons,
296  const reco::Vertex &primaryVertex) const {
298  info.setJetRef(jet);
299 
300  for (Leptons::const_iterator lepton = leptons.begin(); lepton != leptons.end(); ++lepton) {
301  const math::XYZVector &lepton_momentum = lepton->first->momentum();
302  if (m_chi2Cut > 0.0 && lepton->first->normalizedChi2() > m_chi2Cut)
303  continue;
304 
305  const GlobalVector jetAxis = refineJetAxis(jet, tracks, lepton->first);
306  const math::XYZVector axis(jetAxis.x(), jetAxis.y(), jetAxis.z());
307  float deltaR = Geom::deltaR(lepton_momentum, axis);
308  if (deltaR > m_deltaRCut)
309  continue;
310 
311  reco::SoftLeptonProperties properties;
312 
313  reco::TransientTrack transientTrack = m_transientTrackBuilder->build(*lepton->first);
314  Measurement1D ip2d = IPTools::signedTransverseImpactParameter(transientTrack, jetAxis, primaryVertex).second;
315  Measurement1D ip3d = IPTools::signedImpactParameter3D(transientTrack, jetAxis, primaryVertex).second;
316  properties.sip2dsig = ip2d.significance();
317  properties.sip3dsig = ip3d.significance();
318  properties.sip2d = ip2d.value();
319  properties.sip3d = ip3d.value();
320  properties.deltaR = deltaR;
321  properties.ptRel = Perp(lepton_momentum, axis);
322  properties.p0Par = boostedPPar(lepton_momentum, axis);
323  properties.etaRel = relativeEta(lepton_momentum, axis);
324  properties.ratio = lepton_momentum.R() / axis.R();
325  properties.ratioRel = lepton_momentum.Dot(axis) / axis.Mag2();
326 
327  for (LeptonIds::const_iterator iter = lepton->second.begin(); iter != lepton->second.end(); ++iter)
328  properties.setQuality(static_cast<SoftLeptonProperties::Quality::Generic>(iter->first), iter->second);
329 
330  info.insert(lepton->first, properties);
331  }
332 
333  return info;
334 }
335 
336 // ---------------------------------------------------------------------------------------
339  const reco::TrackBaseRef &exclude /* = reco::TrackBaseRef() */
340 ) const {
341  math::XYZVector axis = jet->momentum();
342 
344  double sum_pT = 0.;
345  double sum_eta_by_pT = 0.;
346  double sum_phi_by_pT = 0.;
347 
348  double perp;
349  double phi_rel;
350  double eta_rel;
351 
352  // refine jet eta and phi with charged tracks measurements, if available
353  for (reco::TrackRefVector::const_iterator track_it = tracks.begin(); track_it != tracks.end(); ++track_it) {
354  const reco::Track &track = **track_it;
355 
356  perp = track.pt();
357  eta_rel = (double)track.eta() - axis.eta();
358  phi_rel = (double)track.phi() - axis.phi();
359  while (phi_rel < -M_PI)
360  phi_rel += 2 * M_PI;
361  while (phi_rel > M_PI)
362  phi_rel -= 2 * M_PI;
363 
364  sum_pT += perp;
365  sum_phi_by_pT += perp * phi_rel;
366  sum_eta_by_pT += perp * eta_rel;
367  }
368 
369  // "remove" excluded track
371  const reco::Track &track = *exclude;
372 
373  perp = track.pt();
374  eta_rel = (double)track.eta() - axis.eta();
375  phi_rel = (double)track.phi() - axis.phi();
376  while (phi_rel < -M_PI)
377  phi_rel += 2 * M_PI;
378  while (phi_rel > M_PI)
379  phi_rel -= 2 * M_PI;
380 
381  sum_pT -= perp;
382  sum_phi_by_pT -= perp * phi_rel;
383  sum_eta_by_pT -= perp * eta_rel;
384  }
385 
386  if (sum_pT > 1.) // avoid the case of only the lepton-track with small rounding errors
387  axis =
388  math::RhoEtaPhiVector(axis.rho(), axis.eta() + sum_eta_by_pT / sum_pT, axis.phi() + sum_phi_by_pT / sum_pT);
389 
391  math::XYZVector sum;
392 
393  // recalculate the jet direction as the sum of charget tracks momenta
394  for (reco::TrackRefVector::const_iterator track_it = tracks.begin(); track_it != tracks.end(); ++track_it) {
395  const reco::Track &track = **track_it;
396  sum += track.momentum();
397  }
398 
399  // "remove" excluded track
400  if (m_refineJetAxis == AXIS_CHARGED_SUM_NOLEPTON and exclude.isNonnull()) {
401  const reco::Track &track = *exclude;
402  sum -= track.momentum();
403  }
404 
405  if (sum.R() > 1.) // avoid the case of only the lepton-track with small rounding errors
406  axis = sum;
408  axis -= exclude->momentum();
409  }
410 
411  return GlobalVector(axis.x(), axis.y(), axis.z());
412 }
413 
415  double mag = vector.r() * axis.r();
416  double dot = vector.Dot(axis);
417  return -log((mag - dot) / (mag + dot)) / 2;
418 }
419 
420 // compute the lepton momentum along the jet axis, in the jet rest frame
422  static const double lepton_mass = 0.00; // assume a massless (ultrarelativistic) lepton
423  static const double jet_mass = 5.279; // use B±/B0 mass as the jet rest mass [PDG 2007 updates]
424  ROOT::Math::LorentzVector<ROOT::Math::PxPyPzM4D<double> > lepton(
425  vector.Dot(axis) / axis.r(), Perp(vector, axis), 0., lepton_mass);
426  ROOT::Math::LorentzVector<ROOT::Math::PxPyPzM4D<double> > jet(axis.r(), 0., 0., jet_mass);
427  ROOT::Math::BoostX boost(-jet.Beta());
428  return boost(lepton).x();
429 }
430 
431 // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
434  desc.add<unsigned int>("muonSelection", 1);
435  desc.add<edm::InputTag>("leptons", edm::InputTag("muons"));
436  desc.add<edm::InputTag>("primaryVertex", edm::InputTag("offlinePrimaryVertices"));
437  desc.add<edm::InputTag>("leptonCands", edm::InputTag(""));
438  desc.add<edm::InputTag>("leptonId", edm::InputTag(""));
439  desc.add<unsigned int>("refineJetAxis", 0);
440  desc.add<edm::InputTag>("jets", edm::InputTag("ak4PFJetsCHS"));
441  desc.add<double>("leptonDeltaRCut", 0.4);
442  desc.add<double>("leptonChi2Cut", 9999.0);
443  descriptions.addDefault(desc);
444 }
dot
T dot(const Basic3DVector &v) const
Scalar product, or "dot" product, with a vector of same type.
Definition: Basic3DVectorLD.h:212
Vector3DBase
Definition: Vector3DBase.h:8
SoftLepton::token_jtas
const edm::EDGetTokenT< reco::JetTracksAssociationCollection > token_jtas
Definition: SoftLepton.h:87
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
SoftLepton::produce
void produce(edm::Event &event, const edm::EventSetup &setup) override
Definition: SoftLepton.cc:100
edm::View::begin
const_iterator begin() const
Measurement1D
Definition: Measurement1D.h:11
mps_fire.i
i
Definition: mps_fire.py:428
reco::SoftLeptonProperties
Definition: TemplatedSoftLeptonTagInfo.h:15
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
dqmMemoryStats.float
float
Definition: dqmMemoryStats.py:127
SoftLepton::token_pfElectrons
const edm::EDGetTokenT< reco::PFCandidateCollection > token_pfElectrons
Definition: SoftLepton.h:93
reco::SoftLeptonProperties::sip3d
float sip3d
Definition: TemplatedSoftLeptonTagInfo.h:34
SoftLepton::Leptons
std::map< edm::RefToBase< reco::Track >, LeptonIds, TrackCompare > Leptons
Definition: SoftLepton.h:63
reco::SoftLeptonProperties::p0Par
float p0Par
Definition: TemplatedSoftLeptonTagInfo.h:36
muon
Definition: MuonCocktails.h:17
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
HLT_FULL_cff.leptons
leptons
Definition: HLT_FULL_cff.py:26281
edm::View::refAt
RefToBase< value_type > refAt(size_type i) const
edm
HLT enums.
Definition: AlignableModifier.h:19
Measurement1D::value
double value() const
Definition: Measurement1D.h:25
reco::SoftLeptonProperties::sip2dsig
float sip2dsig
Definition: TemplatedSoftLeptonTagInfo.h:31
reco::Vertex::Error
math::Error< dimension >::type Error
covariance error matrix (3x3)
Definition: Vertex.h:44
AXIS_CHARGED_AVERAGE_NOLEPTON
Definition: SoftLepton.cc:41
reco::VertexCollection
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
MuonView
edm::View< reco::Muon > MuonView
Definition: SoftLepton.cc:54
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89285
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
SoftLepton::token_primaryVertex
const edm::EDGetTokenT< reco::VertexCollection > token_primaryVertex
Definition: SoftLepton.h:89
AXIS_CALORIMETRIC
Definition: SoftLepton.cc:39
SoftLepton::m_jets
const edm::InputTag m_jets
Definition: SoftLepton.h:86
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
reco::SoftLeptonProperties::sip3dsig
float sip3dsig
Definition: TemplatedSoftLeptonTagInfo.h:32
reco::TrackBaseRef
edm::RefToBase< reco::Track > TrackBaseRef
persistent reference to a Track, using views
Definition: TrackFwd.h:35
singleTopDQM_cfi.jets
jets
Definition: singleTopDQM_cfi.py:42
edm::RefVector< TrackCollection >
AXIS_CHARGED_AVERAGE
Definition: SoftLepton.cc:40
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
GlobalVector
Global3DVector GlobalVector
Definition: GlobalVector.h:10
TransientTrack.h
IPTools::signedTransverseImpactParameter
std::pair< bool, Measurement1D > signedTransverseImpactParameter(const reco::TransientTrack &track, const GlobalVector &direction, const reco::Vertex &vertex)
Definition: IPTools.cc:57
perp
T perp() const
Magnitude of transverse component.
Definition: Basic3DVectorLD.h:133
edm::errors::NotFound
Definition: EDMException.h:57
math::RhoEtaPhiVector
RhoEtaPhiVectorD RhoEtaPhiVector
spatial vector with cylindrical internal representation using pseudorapidity
Definition: Vector3D.h:33
boost
Definition: CLHEP.h:16
edm::Handle
Definition: AssociativeIterator.h:50
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
SoftLepton::~SoftLepton
~SoftLepton() override
Definition: SoftLepton.cc:97
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
BeamMonitor_cff.primaryVertex
primaryVertex
hltOfflineBeamSpot for HLTMON
Definition: BeamMonitor_cff.py:7
muon::isGoodMuon
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
Definition: MuonSelectors.cc:649
SoftLepton::LeptonIds
std::map< unsigned int, float > LeptonIds
Definition: SoftLepton.h:62
reco::SoftLeptonProperties::etaRel
float etaRel
Definition: TemplatedSoftLeptonTagInfo.h:38
SoftLepton::token_leptonId
const edm::EDGetTokenT< edm::ValueMap< float > > token_leptonId
Definition: SoftLepton.h:99
BeamSpot.h
Jet
Definition: Jet.py:1
muon::SelectionType
SelectionType
Selector type.
Definition: MuonSelectors.h:18
IPTools::signedImpactParameter3D
std::pair< bool, Measurement1D > signedImpactParameter3D(const reco::TransientTrack &track, const GlobalVector &direction, const reco::Vertex &vertex)
Definition: IPTools.cc:81
HLT_FULL_cff.muon
muon
Definition: HLT_FULL_cff.py:11710
SoftLepton::tag
reco::SoftLeptonTagInfo tag(const edm::RefToBase< reco::Jet > &jet, const reco::TrackRefVector &tracks, const Leptons &leptons, const reco::Vertex &primaryVertex) const
Definition: SoftLepton.cc:293
reco::SoftLeptonProperties::ratio
float ratio
Definition: TemplatedSoftLeptonTagInfo.h:40
SoftLepton::s_nominalBeamSpot
static const reco::Vertex s_nominalBeamSpot
Definition: SoftLepton.h:113
TransientTrackRecord
Definition: TransientTrackRecord.h:11
metsig::electron
Definition: SignAlgoResolutions.h:48
reco::Track
Definition: Track.h:27
edm::ESHandle< TransientTrackBuilder >
GsfElectronView
edm::View< reco::GsfElectron > GsfElectronView
Definition: SoftLepton.cc:52
reco::SoftLeptonProperties::ptRel
float ptRel
Definition: TemplatedSoftLeptonTagInfo.h:35
ParameterSetDescription.h
SoftLepton::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: SoftLepton.cc:432
reco::SoftLeptonProperties::sip2d
float sip2d
Definition: TemplatedSoftLeptonTagInfo.h:33
PbPb_ZMuSkimMuonDPG_cff.deltaR
deltaR
Definition: PbPb_ZMuSkimMuonDPG_cff.py:63
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
SoftLepton::token_tracks
const edm::EDGetTokenT< edm::View< reco::Track > > token_tracks
Definition: SoftLepton.h:95
ElectronView
edm::View< reco::Electron > ElectronView
Definition: SoftLepton.cc:53
edm::AssociationVector
Definition: AssociationVector.h:67
edm::View
Definition: CaloClusterFwd.h:14
Measurement1D::significance
double significance() const
Definition: Measurement1D.h:29
AXIS_CHARGED_SUM_NOLEPTON
Definition: SoftLepton.cc:43
reco::TemplatedSoftLeptonTagInfo
Definition: TemplatedSoftLeptonTagInfo.h:108
bphysicsOniaDQM_cfi.vertex
vertex
Definition: bphysicsOniaDQM_cfi.py:7
TransientTrackBuilder.h
edm::ParameterSet
Definition: ParameterSet.h:47
SoftLepton::token_leptonCands
const edm::EDGetTokenT< edm::ValueMap< float > > token_leptonCands
Definition: SoftLepton.h:97
tracks
const uint32_t *__restrict__ const HitContainer *__restrict__ TkSoA *__restrict__ tracks
Definition: CAHitNtupletGeneratorKernelsImpl.h:159
SoftLepton::token_electrons
const edm::EDGetTokenT< edm::View< reco::Electron > > token_electrons
Definition: SoftLepton.h:92
SoftLepton::m_chi2Cut
double m_chi2Cut
Definition: SoftLepton.h:107
SoftLepton.h
SoftLepton::m_leptonId
const edm::InputTag m_leptonId
Definition: SoftLepton.h:98
math::XYZVector
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
SoftLepton::SoftLepton
SoftLepton(const edm::ParameterSet &iConfig)
Definition: SoftLepton.cc:70
electrons_cff.ip3d
ip3d
Definition: electrons_cff.py:357
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
LorentzVector.h
createfilelist.int
int
Definition: createfilelist.py:10
reco::PFCandidateRef
edm::Ref< PFCandidateCollection > PFCandidateRef
persistent reference to a PFCandidate
Definition: PFCandidateFwd.h:24
SoftLepton::token_muons
const edm::EDGetTokenT< edm::View< reco::Muon > > token_muons
Definition: SoftLepton.h:94
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
edm::AssociationVector::size
size_type size() const
Definition: AssociationVector.h:227
AxisType
AxisType
Definition: SoftLepton.cc:38
edm::EventSetup
Definition: EventSetup.h:58
SoftLepton::token_jets
const edm::EDGetTokenT< edm::View< reco::Jet > > token_jets
Definition: SoftLepton.h:88
TransientTrackRecord.h
get
#define get
reco::SoftLeptonProperties::deltaR
float deltaR
Definition: TemplatedSoftLeptonTagInfo.h:39
InputTag.h
SoftLepton::m_leptons
const edm::InputTag m_leptons
Definition: SoftLepton.h:90
SoftLepton::relativeEta
static double relativeEta(const math::XYZVector &vector, const math::XYZVector &axis)
Definition: SoftLepton.cc:414
SoftLepton::boostedPPar
static double boostedPPar(const math::XYZVector &vector, const math::XYZVector &axis)
Definition: SoftLepton.cc:421
mag
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
Definition: Basic3DVectorLD.h:127
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
SoftLepton::m_muonSelection
muon::SelectionType m_muonSelection
Definition: SoftLepton.h:110
reco::Vertex::Point
math::XYZPoint Point
point in the space
Definition: Vertex.h:40
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
IPTools.h
SoftLepton::m_transientTrackBuilder
const TransientTrackBuilder * m_transientTrackBuilder
Definition: SoftLepton.h:102
HLT_FULL_cff.leptonId
leptonId
Definition: HLT_FULL_cff.py:53000
reco::TransientTrack
Definition: TransientTrack.h:19
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
metsig::jet
Definition: SignAlgoResolutions.h:47
edm::ValueMap
Definition: ValueMap.h:107
edm::RefToBase::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: RefToBase.h:301
Exception
Definition: hltDiff.cc:245
edm::RefVectorIterator
Definition: EDProductfwd.h:33
reco::PFCandidateCollection
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
Definition: PFCandidateFwd.h:12
or
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
edm::RefToBase< reco::Track >
SoftLepton::m_deltaRCut
double m_deltaRCut
Definition: SoftLepton.h:106
SoftLepton::m_leptonCands
const edm::InputTag m_leptonCands
Definition: SoftLepton.h:96
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
edm::View::const_iterator
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
TransientTrackBuilder::build
reco::TransientTrack build(const reco::Track *p) const
Definition: TransientTrackBuilder.cc:20
mps_fire.result
result
Definition: mps_fire.py:311
edm::View::end
const_iterator end() const
SoftLepton::refineJetAxis
GlobalVector refineJetAxis(const edm::RefToBase< reco::Jet > &jet, const reco::TrackRefVector &tracks, const edm::RefToBase< reco::Track > &exclude=edm::RefToBase< reco::Track >()) const
Definition: SoftLepton.cc:337
reco::SoftLeptonProperties::setQuality
void setQuality(Quality::Generic qual, float value)
Definition: TemplatedSoftLeptonTagInfo.h:96
reco::TrackBase::momentum
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:664
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
edm::ConfigurationDescriptions::addDefault
void addDefault(ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:99
reco::SoftLeptonProperties::ratioRel
float ratioRel
Definition: TemplatedSoftLeptonTagInfo.h:41
edm::InputTag
Definition: InputTag.h:15
edm::ProductID
Definition: ProductID.h:27
reco::Vertex
Definition: Vertex.h:35
SoftLepton::token_gsfElectrons
const edm::EDGetTokenT< edm::View< reco::GsfElectron > > token_gsfElectrons
Definition: SoftLepton.h:91
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
AXIS_CALORIMETRIC_NOLEPTON
Definition: SoftLepton.cc:44
SoftLepton::m_refineJetAxis
unsigned int m_refineJetAxis
Definition: SoftLepton.h:105
AXIS_CHARGED_SUM
Definition: SoftLepton.cc:42