CMS 3D CMS Logo

Functions
zMCLeptonDaughters.cc File Reference
#include "CommonTools/CandUtils/interface/zMCLeptonDaughters.h"
#include "DataFormats/Candidate/interface/Candidate.h"
#include "FWCore/Utilities/interface/EDMException.h"
#include <cassert>

Go to the source code of this file.

Functions

pair< const Candidate *, const Candidate * > zMCLeptonDaughters (const Candidate &z, int leptonPdgId)
 

Function Documentation

◆ zMCLeptonDaughters()

pair<const Candidate*, const Candidate*> zMCLeptonDaughters ( const Candidate z,
int  leptonPdgId 
)

Definition at line 8 of file zMCLeptonDaughters.cc.

8  {
9  if (z.numberOfDaughters() < 2)
10  throw cms::Exception("RuntimeError") << "calling helper function reco::zMCLeptonDaughters passing a Z candidate"
11  "with less than 2 daughters ("
12  << z.numberOfDaughters() << ").\n";
13  const Candidate* dau0 = z.daughter(0);
14  const Candidate* dau1 = z.daughter(1);
15  for (size_t i0 = 0; i0 < dau0->numberOfDaughters(); ++i0) {
16  const Candidate* ddau0 = dau0->daughter(i0);
17  if (abs(ddau0->pdgId()) == leptonPdgId && ddau0->status() == 1) {
18  dau0 = ddau0;
19  break;
20  }
21  }
22  for (size_t i1 = 0; i1 < dau1->numberOfDaughters(); ++i1) {
23  const Candidate* ddau1 = dau1->daughter(i1);
24  if (abs(ddau1->pdgId()) == leptonPdgId && ddau1->status() == 1) {
25  dau1 = ddau1;
26  break;
27  }
28  }
29  assert(abs(dau0->pdgId()) == leptonPdgId && dau0->status() == 1);
30  assert(abs(dau1->pdgId()) == leptonPdgId && dau1->status() == 1);
31  return make_pair(dau0, dau1);
32 }

References funct::abs(), cms::cuda::assert(), reco::Candidate::daughter(), testProducerWithPsetDescEmpty_cfi::i1, jets_cff::leptonPdgId, reco::Candidate::numberOfDaughters(), reco::Candidate::pdgId(), reco::Candidate::status(), and z.

reco::Candidate::daughter
virtual const Candidate * daughter(size_type i) const =0
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode)
detailsBasic3DVector::z
float float float z
Definition: extBasic3DVector.h:14
testProducerWithPsetDescEmpty_cfi.i1
i1
Definition: testProducerWithPsetDescEmpty_cfi.py:45
cms::cuda::assert
assert(be >=bs)
reco::Candidate::status
virtual int status() const =0
status word
reco::Candidate::numberOfDaughters
virtual size_type numberOfDaughters() const =0
number of daughters
reco::Candidate::pdgId
virtual int pdgId() const =0
PDG identifier.
reco::Candidate
Definition: Candidate.h:27
jets_cff.leptonPdgId
leptonPdgId
Definition: jets_cff.py:153
cms::Exception
Definition: Exception.h:70
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22