CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Attributes | Private Member Functions
TtGenEvent Class Reference

Class derived from the TopGenEvent for ttbar events. More...

#include "AnalysisDataFormats/TopObjects/interface/TtGenEvent.h"

Inheritance diagram for TtGenEvent:
TopGenEvent

Public Member Functions

bool fromGluonFusion () const
 check if the tops were produced from a pair of gluons More...
 
bool fromQuarkAnnihilation () const
 check if the tops were produced from qqbar More...
 
std::pair< WDecay::LeptonType, WDecay::LeptonTypefullLeptonicChannel () const
 
const reco::GenParticlehadronicDecayB (bool excludeTauLeptons=false) const
 get b of hadronic decay branch More...
 
const reco::GenParticlehadronicDecayQuark (bool invertFlavor=false) const
 get light quark of hadronic decay branch More...
 
const reco::GenParticlehadronicDecayQuarkBar () const
 get light anti-quark of hadronic decay branch More...
 
const reco::GenParticlehadronicDecayTop (bool excludeTauLeptons=false) const
 get top of hadronic decay branch More...
 
std::vector< const reco::GenParticle * > hadronicDecayTopRadiation (bool excludeTauLeptons=false) const
 gluons as radiated from the hadronicly decaying top quark More...
 
const reco::GenParticlehadronicDecayW (bool excludeTauLeptons=false) const
 get W of hadronic decay branch More...
 
bool isFullHadronic (bool excludeTauLeptons=false) const
 check if the event can be classified as full hadronic More...
 
bool isFullLeptonic (bool excludeTauLeptons=false) const
 check if the event can be classified as full leptonic More...
 
bool isFullLeptonic (WDecay::LeptonType typeA, WDecay::LeptonType typeB) const
 check if the event is full leptonic with the lepton being of typeA or typeB irrelevant of order; all leptons including taus are allowed More...
 
bool isSemiLeptonic (bool excludeTauLeptons=false) const
 check if the event can be classified as semi-laptonic More...
 
bool isSemiLeptonic (WDecay::LeptonType typeA) const
 check if the event is semi-leptonic with the lepton being of typeA; all leptons including taus are allowed More...
 
bool isSemiLeptonic (WDecay::LeptonType typeA, WDecay::LeptonType typeB) const
 check if the event is semi-leptonic with the lepton being of typeA or typeB; all leptons including taus are allowed More...
 
bool isTtBar () const
 check if the event can be classified as ttbar More...
 
const reco::GenParticlelepton (bool excludeTauLeptons=false) const
 get lepton for semi-leptonic or full leptonic decays More...
 
const reco::GenParticleleptonBar (bool excludeTauLeptons=false) const
 get anti-lepton for semi-leptonic or full leptonic decays More...
 
const reco::GenParticleleptonicDecayB (bool excludeTauLeptons=false) const
 get b of leptonic decay branch More...
 
const reco::GenParticleleptonicDecayTop (bool excludeTauLeptons=false) const
 get top of leptonic decay branch More...
 
std::vector< const reco::GenParticle * > leptonicDecayTopRadiation (bool excludeTauLeptons=false) const
 gluons as radiated from the leptonicly decaying top quark More...
 
const reco::GenParticleleptonicDecayW (bool excludeTauLeptons=false) const
 get W of leptonic decay branch More...
 
const reco::GenParticleneutrino (bool excludeTauLeptons=false) const
 get neutrino for semi-leptonic or full leptonic decays More...
 
const reco::GenParticleneutrinoBar (bool excludeTauLeptons=false) const
 get anti-neutrino for semi-leptonic or full leptonic decays More...
 
WDecay::LeptonType semiLeptonicChannel () const
 return decay channel; all leptons including taus are allowed More...
 
const reco::GenParticlesingleLepton (bool excludeTauLeptons=false) const
 return single lepton if available; 0 else More...
 
const reco::GenParticlesingleNeutrino (bool excludeTauLeptons=false) const
 return single neutrino if available; 0 else More...
 
const math::XYZTLorentzVectortopPair () const
 return combined 4-vector of top and topBar More...
 
 TtGenEvent ()
 empty constructor More...
 
 TtGenEvent (reco::GenParticleRefProd &decaySubset, reco::GenParticleRefProd &initSubset)
 default constructor from decaySubset and initSubset More...
 
 ~TtGenEvent () override
 default destructor More...
 
- Public Member Functions inherited from TopGenEvent
const reco::GenParticleb () const
 return b quark if available; 0 else More...
 
const reco::GenParticlebBar () const
 return anti-b quark if available; 0 else More...
 
const reco::GenParticlecandidate (int id, unsigned int parentId=0) const
 get candidate with given pdg id if available; 0 else More...
 
const reco::GenParticledaughterQuarkBarOfWMinus () const
 return anti-quark daughter of anti-W boson More...
 
const reco::GenParticledaughterQuarkBarOfWPlus () const
 return anti-quark daughter of W boson More...
 
const reco::GenParticledaughterQuarkOfTop (bool invertCharge=false) const
 return daughter quark of top quark (which can have flavor b, s or d) More...
 
const reco::GenParticledaughterQuarkOfTopBar () const
 return daughter quark of anti-top quark (which can have flavor b, s or d) More...
 
const reco::GenParticledaughterQuarkOfWMinus () const
 return quark daughter of anti-W boson More...
 
const reco::GenParticledaughterQuarkOfWPlus (bool invertQuarkCharge=false, bool invertBosonCharge=false) const
 return quark daughter quark of W boson More...
 
const reco::GenParticleeMinus () const
 return electron if available; 0 else More...
 
const reco::GenParticleePlus () const
 return positron if available; 0 else More...
 
const reco::GenParticleCollectioninitialPartons () const
 return particles of initial partons More...
 
std::vector< const reco::GenParticle * > lightQuarks (bool includingBQuarks=false) const
 return all light quarks or all quarks including b's More...
 
const reco::GenParticlemuMinus () const
 return muon if available; 0 else More...
 
const reco::GenParticlemuPlus () const
 return anti-muon if available; 0 else More...
 
int numberOfBQuarks (bool fromTopQuark=true) const
 return number of b quarks in the decay chain More...
 
int numberOfLeptons (bool fromWBoson=true) const
 return number of leptons in the decay chain More...
 
int numberOfLeptons (WDecay::LeptonType type, bool fromWBoson=true) const
 return number of leptons in the decay chain More...
 
const reco::GenParticleCollectionparticles () const
 return particles of decay chain More...
 
void print () const
 
std::vector< const reco::GenParticle * > radiatedGluons (int pdgId) const
 return radiated gluons from particle with pdgId More...
 
const reco::GenParticletauMinus () const
 return tau if available; 0 else More...
 
const reco::GenParticletauPlus () const
 return anti-tau if available; 0 else More...
 
const reco::GenParticletop () const
 return top if available; 0 else More...
 
const reco::GenParticletopBar () const
 return anti-top if available; 0 else More...
 
 TopGenEvent ()
 empty constructor More...
 
 TopGenEvent (reco::GenParticleRefProd &decaySubset, reco::GenParticleRefProd &iniSubset)
 default constructor More...
 
std::vector< const reco::GenParticle * > topSisters () const
 return number of top anti-top sisters More...
 
const reco::GenParticlewMinus () const
 return W minus if available; 0 else More...
 
const reco::GenParticlewPlus () const
 return W plus if available; 0 else More...
 
virtual ~TopGenEvent ()
 default destructor More...
 

Protected Attributes

math::XYZTLorentzVector topPair_
 combined 4-vector of top and topBar More...
 
- Protected Attributes inherited from TopGenEvent
reco::GenParticleRefProd initPartons_
 reference to the list of initial partons (has to be kept in the event!) More...
 
reco::GenParticleRefProd parts_
 reference to the top decay chain (has to be kept in the event!) More...
 

Private Member Functions

bool isNumberOfLeptons (bool excludeTauLeptons, int nlep) const
 

Detailed Description

Class derived from the TopGenEvent for ttbar events.

The structure holds reference information to the generator particles of the decay chains for each top quark and of the initial partons and provides access and administration. The derived class contains a few additional getters with respect to its base class.

Definition at line 18 of file TtGenEvent.h.

Constructor & Destructor Documentation

TtGenEvent::TtGenEvent ( )
inline

empty constructor

Definition at line 23 of file TtGenEvent.h.

References TopDecaySubset_cfi::decaySubset, and TopInitSubset_cfi::initSubset.

23 {};
TtGenEvent::TtGenEvent ( reco::GenParticleRefProd decaySubset,
reco::GenParticleRefProd initSubset 
)

default constructor from decaySubset and initSubset

Definition at line 10 of file TtGenEvent.cc.

References TopDecaySubset_cfi::decaySubset, TopGenEvent::initPartons_, TopInitSubset_cfi::initSubset, p4, TopGenEvent::parts_, TopGenEvent::top(), TopGenEvent::topBar(), and topPair_.

11 {
14  if(top() && topBar())
16 }
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
math::XYZTLorentzVector topPair_
combined 4-vector of top and topBar
Definition: TtGenEvent.h:87
const reco::GenParticle * top() const
return top if available; 0 else
Definition: TopGenEvent.h:104
reco::GenParticleRefProd initPartons_
reference to the list of initial partons (has to be kept in the event!)
Definition: TopGenEvent.h:117
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
double p4[4]
Definition: TauolaWrapper.h:92
const reco::GenParticle * topBar() const
return anti-top if available; 0 else
Definition: TopGenEvent.h:106
TtGenEvent::~TtGenEvent ( )
inlineoverride

default destructor

Definition at line 27 of file TtGenEvent.h.

27 {};

Member Function Documentation

bool TtGenEvent::fromGluonFusion ( ) const

check if the tops were produced from a pair of gluons

Definition at line 19 of file TtGenEvent.cc.

References TopGenEvent::initPartons_, and common_cff::pdgId.

Referenced by TopGenEventAnalyzer::analyze(), and isTtBar().

20 {
21  const reco::GenParticleCollection& initPartsColl = *initPartons_;
22  if(initPartsColl.size()==2)
23  if(initPartsColl[0].pdgId()==21 && initPartsColl[1].pdgId()==21)
24  return true;
25  return false;
26 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd initPartons_
reference to the list of initial partons (has to be kept in the event!)
Definition: TopGenEvent.h:117
bool TtGenEvent::fromQuarkAnnihilation ( ) const

check if the tops were produced from qqbar

Definition at line 29 of file TtGenEvent.cc.

References funct::abs(), TopGenEvent::initPartons_, common_cff::pdgId, and TopDecayID::tID.

Referenced by TopGenEventAnalyzer::analyze(), and isTtBar().

30 {
31  const reco::GenParticleCollection& initPartsColl = *initPartons_;
32  if(initPartsColl.size()==2)
33  if(std::abs(initPartsColl[0].pdgId())<TopDecayID::tID && initPartsColl[0].pdgId()==-initPartsColl[1].pdgId())
34  return true;
35  return false;
36 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd initPartons_
reference to the list of initial partons (has to be kept in the event!)
Definition: TopGenEvent.h:117
static const int tID
Definition: TopGenEvent.h:13
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::pair< WDecay::LeptonType, WDecay::LeptonType > TtGenEvent::fullLeptonicChannel ( ) const

Definition at line 51 of file TtGenEvent.cc.

References funct::abs(), TopDecayID::elecID, isFullLeptonic(), WDecay::kElec, WDecay::kMuon, WDecay::kNone, WDecay::kTau, lepton(), leptonBar(), TopDecayID::muonID, common_cff::pdgId, and TopDecayID::tauID.

Referenced by isFullLeptonic(), and isSemiLeptonic().

52 {
54  if( isFullLeptonic() ){
55  if( lepton() ){
59  }
60  if( leptonBar() ){
64  }
65  }
66  return ( std::pair<WDecay::LeptonType,WDecay::LeptonType>(typeA, typeB) );
67 }
const reco::GenParticle * lepton(bool excludeTauLeptons=false) const
get lepton for semi-leptonic or full leptonic decays
Definition: TtGenEvent.cc:70
static const int tauID
Definition: TopGenEvent.h:21
bool isFullLeptonic(bool excludeTauLeptons=false) const
check if the event can be classified as full leptonic
Definition: TtGenEvent.h:40
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const int muonID
Definition: TopGenEvent.h:20
static const int elecID
Definition: TopGenEvent.h:19
const reco::GenParticle * leptonBar(bool excludeTauLeptons=false) const
get anti-lepton for semi-leptonic or full leptonic decays
Definition: TtGenEvent.cc:86
const reco::GenParticle * TtGenEvent::hadronicDecayB ( bool  excludeTauLeptons = false) const

get b of hadronic decay branch

Definition at line 196 of file TtGenEvent.cc.

References funct::abs(), TopDecayID::bID, reco::flavour(), mps_fire::i, TopGenEvent::parts_, common_cff::pdgId, and singleLepton().

Referenced by TtSemiEvtSolution::getGenHadb(), isSemiLeptonic(), TtSemiEvtSolutionMaker::produce(), and TtSemiLepEvtPartons::vec().

197 {
198  const reco::GenParticle* cand=nullptr;
199  if( singleLepton(excludeTauLeptons) ){
200  const reco::GenParticleCollection& partsColl = *parts_;
201  const reco::GenParticle& singleLep = *singleLepton(excludeTauLeptons);
202  for (unsigned int i = 0; i < partsColl.size(); ++i) {
203  if (std::abs(partsColl[i].pdgId())==TopDecayID::bID &&
204  reco::flavour(singleLep)==reco::flavour(partsColl[i])) {
205  cand = &partsColl[i];
206  }
207  }
208  }
209  return cand;
210 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
static const int bID
Definition: TopGenEvent.h:14
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
const reco::GenParticle * singleLepton(bool excludeTauLeptons=false) const
return single lepton if available; 0 else
Definition: TtGenEvent.cc:102
const reco::GenParticle * TtGenEvent::hadronicDecayQuark ( bool  invertFlavor = false) const

get light quark of hadronic decay branch

Definition at line 166 of file TtGenEvent.cc.

References funct::abs(), Exception, reco::flavour(), edm::errors::InvalidReference, TopGenEvent::parts_, singleLepton(), TopDecayID::tID, w, and TopDecayID::WID.

Referenced by TtSemiLepHypGenMatch::buildHypo(), TtSemiEvtSolution::getGenHadp(), hadronicDecayQuarkBar(), isSemiLeptonic(), TtSemiEvtSolutionMaker::produce(), and TtSemiLepEvtPartons::vec().

167 {
168  const reco::GenParticle* cand=nullptr;
169  // catch W boson and check its daughters for a quark;
170  // make sure the decay is semi-leptonic first; this
171  // only makes sense if taus are not excluded from the
172  // decision
173  if( singleLepton(false) ){
174  for(reco::GenParticleCollection::const_iterator w=parts_->begin(); w!=parts_->end(); ++w){
175  if( std::abs( w->pdgId() )==TopDecayID::WID ){
176  // make sure that the particle is a W daughter
177  for(reco::GenParticle::const_iterator wd=w->begin(); wd!=w->end(); ++wd){
178  // make sure that the parton is a quark
179  if( std::abs(wd->pdgId())<TopDecayID::tID ){
180  if( invertFlavor?reco::flavour(*wd)<0:reco::flavour(*wd)>0 ){
181  cand = dynamic_cast<const reco::GenParticle* > (&(*wd));
182  if(cand == nullptr){
183  throw edm::Exception( edm::errors::InvalidReference, "Not a GenParticle" );
184  }
185  break;
186  }
187  }
188  }
189  }
190  }
191  }
192  return cand;
193 }
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
const double w
Definition: UKUtility.cc:23
static const int tID
Definition: TopGenEvent.h:13
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const int WID
Definition: TopGenEvent.h:18
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
const reco::GenParticle * singleLepton(bool excludeTauLeptons=false) const
return single lepton if available; 0 else
Definition: TtGenEvent.cc:102
const reco::GenParticle* TtGenEvent::hadronicDecayQuarkBar ( ) const
inline

get light anti-quark of hadronic decay branch

Definition at line 72 of file TtGenEvent.h.

References hadronicDecayQuark(), hadronicDecayTopRadiation(), lepton(), leptonBar(), leptonicDecayTopRadiation(), neutrino(), and neutrinoBar().

Referenced by TtSemiLepHypGenMatch::buildHypo(), TtSemiEvtSolution::getGenHadq(), TtSemiEvtSolutionMaker::produce(), and TtSemiLepEvtPartons::vec().

72 {return hadronicDecayQuark(true); };
const reco::GenParticle * hadronicDecayQuark(bool invertFlavor=false) const
get light quark of hadronic decay branch
Definition: TtGenEvent.cc:166
const reco::GenParticle * TtGenEvent::hadronicDecayTop ( bool  excludeTauLeptons = false) const

get top of hadronic decay branch

Definition at line 231 of file TtGenEvent.cc.

References funct::abs(), reco::flavour(), mps_fire::i, TopGenEvent::parts_, common_cff::pdgId, singleLepton(), and TopDecayID::tID.

Referenced by TtSemiEvtSolution::getGenHadt(), hadronicDecayTopRadiation(), and isSemiLeptonic().

232 {
233  const reco::GenParticle* cand=nullptr;
234  if( singleLepton(excludeTauLeptons) ){
235  const reco::GenParticleCollection& partsColl = *parts_;
236  const reco::GenParticle& singleLep = *singleLepton(excludeTauLeptons);
237  for (unsigned int i = 0; i < partsColl.size(); ++i) {
238  if (std::abs(partsColl[i].pdgId())==TopDecayID::tID &&
239  reco::flavour(singleLep)==reco::flavour(partsColl[i])) {
240  cand = &partsColl[i];
241  }
242  }
243  }
244  return cand;
245 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
static const int tID
Definition: TopGenEvent.h:13
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
const reco::GenParticle * singleLepton(bool excludeTauLeptons=false) const
return single lepton if available; 0 else
Definition: TtGenEvent.cc:102
std::vector< const reco::GenParticle * > TtGenEvent::hadronicDecayTopRadiation ( bool  excludeTauLeptons = false) const

gluons as radiated from the hadronicly decaying top quark

Definition at line 307 of file TtGenEvent.cc.

References hadronicDecayTop(), common_cff::pdgId, TopGenEvent::radiatedGluons(), and TopDecayID::tID.

Referenced by hadronicDecayQuarkBar().

307  {
308  if( hadronicDecayTop(excludeTauLeptons) ){
309  return (hadronicDecayTop(excludeTauLeptons)->pdgId()>0 ? radiatedGluons(TopDecayID::tID) : radiatedGluons(-TopDecayID::tID));
310  }
311  std::vector<const reco::GenParticle*> rad;
312  return (rad);
313 }
static const int tID
Definition: TopGenEvent.h:13
const reco::GenParticle * hadronicDecayTop(bool excludeTauLeptons=false) const
get top of hadronic decay branch
Definition: TtGenEvent.cc:231
std::vector< const reco::GenParticle * > radiatedGluons(int pdgId) const
return radiated gluons from particle with pdgId
Definition: TopGenEvent.cc:199
const reco::GenParticle * TtGenEvent::hadronicDecayW ( bool  excludeTauLeptons = false) const

get W of hadronic decay branch

Definition at line 213 of file TtGenEvent.cc.

References funct::abs(), reco::flavour(), mps_fire::i, TopGenEvent::parts_, common_cff::pdgId, singleLepton(), and TopDecayID::WID.

Referenced by TtSemiEvtSolution::getGenHadW(), and isSemiLeptonic().

214 {
215  const reco::GenParticle* cand=nullptr;
216  if( singleLepton(excludeTauLeptons) ){
217  const reco::GenParticleCollection& partsColl = *parts_;
218  const reco::GenParticle& singleLep = *singleLepton(excludeTauLeptons);
219  for (unsigned int i = 0; i < partsColl.size(); ++i) {
220  if (std::abs(partsColl[i].pdgId())==TopDecayID::WID &&
221  reco::flavour(singleLep) != -reco::flavour(partsColl[i])) {
222  // PDG Id:13=mu- 24=W+ (+24)->(-13) (-24)->(+13) opposite sign
223  cand = &partsColl[i];
224  }
225  }
226  }
227  return cand;
228 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const int WID
Definition: TopGenEvent.h:18
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
const reco::GenParticle * singleLepton(bool excludeTauLeptons=false) const
return single lepton if available; 0 else
Definition: TtGenEvent.cc:102
bool TtGenEvent::isFullHadronic ( bool  excludeTauLeptons = false) const
inline

check if the event can be classified as full hadronic

Definition at line 36 of file TtGenEvent.h.

References isNumberOfLeptons(), and isTtBar().

Referenced by TtFullHadSignalSelMVATrainer::analyze(), TtHadEvtSolution::setGenEvt(), and TtFullHadEvtPartons::vec().

36 { return isTtBar() ? isNumberOfLeptons(excludeTauLeptons, 0) : false;}
bool isNumberOfLeptons(bool excludeTauLeptons, int nlep) const
Definition: TtGenEvent.h:98
bool isTtBar() const
check if the event can be classified as ttbar
Definition: TtGenEvent.h:30
bool TtGenEvent::isFullLeptonic ( bool  excludeTauLeptons = false) const
inline

check if the event can be classified as full leptonic

Definition at line 40 of file TtGenEvent.h.

References isNumberOfLeptons(), isTtBar(), and semiLeptonicChannel().

Referenced by TtFullLepHypGenMatch::buildHypo(), TtFullLepHypGenMatch::buildMatchingNeutrinos(), fullLeptonicChannel(), isSemiLeptonic(), TtDilepLRSignalSelObservables::operator()(), TtDilepEvtSolution::setGenEvt(), and TtFullLepEvtPartons::vec().

40 { return isTtBar() ? isNumberOfLeptons(excludeTauLeptons, 2) : false;}
bool isNumberOfLeptons(bool excludeTauLeptons, int nlep) const
Definition: TtGenEvent.h:98
bool isTtBar() const
check if the event can be classified as ttbar
Definition: TtGenEvent.h:30
bool TtGenEvent::isFullLeptonic ( WDecay::LeptonType  typeA,
WDecay::LeptonType  typeB 
) const
inline

check if the event is full leptonic with the lepton being of typeA or typeB irrelevant of order; all leptons including taus are allowed

Definition at line 102 of file TtGenEvent.h.

References plotBeamSpotDB::first, fullLeptonicChannel(), and edm::second().

103 {
104  return ( (fullLeptonicChannel().first==typeA && fullLeptonicChannel().second==typeB)||
105  (fullLeptonicChannel().first==typeB && fullLeptonicChannel().second==typeA));
106 }
U second(std::pair< T, U > const &p)
std::pair< WDecay::LeptonType, WDecay::LeptonType > fullLeptonicChannel() const
Definition: TtGenEvent.cc:51
bool TtGenEvent::isNumberOfLeptons ( bool  excludeTauLeptons,
int  nlep 
) const
inlineprivate

check whether the number of leptons among the daughters of the W boson is nlep or not; there is an option to exclude taus from the list of leptons to consider

Definition at line 98 of file TtGenEvent.h.

References WDecay::kTau, and TopGenEvent::numberOfLeptons().

Referenced by isFullHadronic(), isFullLeptonic(), and isSemiLeptonic().

98 {return excludeTauLeptons ? (numberOfLeptons()-numberOfLeptons(WDecay::kTau))==nlep : numberOfLeptons()==nlep;}
int numberOfLeptons(bool fromWBoson=true) const
return number of leptons in the decay chain
Definition: TopGenEvent.cc:48
bool TtGenEvent::isSemiLeptonic ( bool  excludeTauLeptons = false) const
inline

check if the event can be classified as semi-laptonic

Definition at line 38 of file TtGenEvent.h.

References isNumberOfLeptons(), and isTtBar().

Referenced by TtSemiLepSignalSelMVATrainer::analyze(), ResolutionCreator::analyze(), TtSemiLepHypGenMatch::findMatchingLepton(), TtDilepLRSignalSelObservables::operator()(), TtSemiLRJetCombObservables::operator()(), semiLeptonicChannel(), TtSemiEvtSolution::setGenEvt(), singleLepton(), singleNeutrino(), and TtSemiLepEvtPartons::vec().

38 { return isTtBar() ? isNumberOfLeptons(excludeTauLeptons, 1) : false;}
bool isNumberOfLeptons(bool excludeTauLeptons, int nlep) const
Definition: TtGenEvent.h:98
bool isTtBar() const
check if the event can be classified as ttbar
Definition: TtGenEvent.h:30
bool TtGenEvent::isSemiLeptonic ( WDecay::LeptonType  typeA) const
inline

check if the event is semi-leptonic with the lepton being of typeA; all leptons including taus are allowed

Definition at line 45 of file TtGenEvent.h.

References semiLeptonicChannel().

45 { return semiLeptonicChannel()==typeA ? true : false; };
WDecay::LeptonType semiLeptonicChannel() const
return decay channel; all leptons including taus are allowed
Definition: TtGenEvent.cc:39
bool TtGenEvent::isSemiLeptonic ( WDecay::LeptonType  typeA,
WDecay::LeptonType  typeB 
) const
inline

check if the event is semi-leptonic with the lepton being of typeA or typeB; all leptons including taus are allowed

Definition at line 47 of file TtGenEvent.h.

References fullLeptonicChannel(), hadronicDecayB(), hadronicDecayQuark(), hadronicDecayTop(), hadronicDecayW(), isFullLeptonic(), leptonicDecayB(), leptonicDecayTop(), leptonicDecayW(), semiLeptonicChannel(), singleLepton(), and singleNeutrino().

47 { return (semiLeptonicChannel()==typeA || semiLeptonicChannel()==typeB)? true : false; };
WDecay::LeptonType semiLeptonicChannel() const
return decay channel; all leptons including taus are allowed
Definition: TtGenEvent.cc:39
bool TtGenEvent::isTtBar ( ) const
inline

check if the event can be classified as ttbar

Definition at line 30 of file TtGenEvent.h.

References fromGluonFusion(), fromQuarkAnnihilation(), TopGenEvent::top(), and TopGenEvent::topBar().

Referenced by TopGenEventAnalyzer::analyze(), TtFullHadSignalSelMVATrainer::analyze(), TtFullLepHypGenMatch::buildMatchingNeutrinos(), TtSemiLepHypGenMatch::findMatchingLepton(), isFullHadronic(), isFullLeptonic(), isSemiLeptonic(), and TtDilepLRSignalSelObservables::operator()().

30 {return (top() && topBar());}
const reco::GenParticle * top() const
return top if available; 0 else
Definition: TopGenEvent.h:104
const reco::GenParticle * topBar() const
return anti-top if available; 0 else
Definition: TopGenEvent.h:106
const reco::GenParticle * TtGenEvent::lepton ( bool  excludeTauLeptons = false) const

get lepton for semi-leptonic or full leptonic decays

Definition at line 70 of file TtGenEvent.cc.

References funct::abs(), reco::flavour(), mps_fire::i, reco::isLepton(), TopGenEvent::parts_, common_cff::pdgId, and TopDecayID::WID.

Referenced by TtFullLepHypGenMatch::buildHypo(), fullLeptonicChannel(), TtDilepEvtSolution::getGenLepm(), and hadronicDecayQuarkBar().

71 {
72  const reco::GenParticle* cand = nullptr;
73  const reco::GenParticleCollection& partsColl = *parts_;
74  for (unsigned int i = 0; i < partsColl.size(); ++i) {
75  if (reco::isLepton(partsColl[i]) && partsColl[i].mother() &&
76  std::abs(partsColl[i].mother()->pdgId())==TopDecayID::WID) {
77  if(reco::flavour(partsColl[i])>0){
78  cand = &partsColl[i];
79  }
80  }
81  }
82  return cand;
83 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
bool isLepton(const Candidate &part)
Definition: pdgIdUtils.h:19
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const int WID
Definition: TopGenEvent.h:18
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
const reco::GenParticle * TtGenEvent::leptonBar ( bool  excludeTauLeptons = false) const

get anti-lepton for semi-leptonic or full leptonic decays

Definition at line 86 of file TtGenEvent.cc.

References funct::abs(), reco::flavour(), mps_fire::i, reco::isLepton(), TopGenEvent::parts_, common_cff::pdgId, and TopDecayID::WID.

Referenced by TtFullLepHypGenMatch::buildHypo(), fullLeptonicChannel(), TtDilepEvtSolution::getGenLepp(), and hadronicDecayQuarkBar().

87 {
88  const reco::GenParticle* cand = nullptr;
89  const reco::GenParticleCollection& partsColl = *parts_;
90  for (unsigned int i = 0; i < partsColl.size(); ++i) {
91  if (reco::isLepton(partsColl[i]) && partsColl[i].mother() &&
92  std::abs(partsColl[i].mother()->pdgId())==TopDecayID::WID) {
93  if(reco::flavour(partsColl[i])<0){
94  cand = &partsColl[i];
95  }
96  }
97  }
98  return cand;
99 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
bool isLepton(const Candidate &part)
Definition: pdgIdUtils.h:19
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const int WID
Definition: TopGenEvent.h:18
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
const reco::GenParticle * TtGenEvent::leptonicDecayB ( bool  excludeTauLeptons = false) const

get b of leptonic decay branch

Definition at line 248 of file TtGenEvent.cc.

References funct::abs(), TopDecayID::bID, reco::flavour(), mps_fire::i, TopGenEvent::parts_, common_cff::pdgId, and singleLepton().

Referenced by TtSemiEvtSolution::getGenLepb(), isSemiLeptonic(), TtSemiEvtSolutionMaker::produce(), and TtSemiLepEvtPartons::vec().

249 {
250  const reco::GenParticle* cand=nullptr;
251  if( singleLepton(excludeTauLeptons) ){
252  const reco::GenParticleCollection& partsColl = *parts_;
253  const reco::GenParticle& singleLep = *singleLepton(excludeTauLeptons);
254  for (unsigned int i = 0; i < partsColl.size(); ++i) {
255  if (std::abs(partsColl[i].pdgId())==TopDecayID::bID &&
256  reco::flavour(singleLep)!=reco::flavour(partsColl[i])) {
257  cand = &partsColl[i];
258  }
259  }
260  }
261  return cand;
262 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
static const int bID
Definition: TopGenEvent.h:14
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
const reco::GenParticle * singleLepton(bool excludeTauLeptons=false) const
return single lepton if available; 0 else
Definition: TtGenEvent.cc:102
const reco::GenParticle * TtGenEvent::leptonicDecayTop ( bool  excludeTauLeptons = false) const

get top of leptonic decay branch

Definition at line 283 of file TtGenEvent.cc.

References funct::abs(), reco::flavour(), mps_fire::i, TopGenEvent::parts_, common_cff::pdgId, singleLepton(), and TopDecayID::tID.

Referenced by TtSemiEvtSolution::getGenLept(), isSemiLeptonic(), and leptonicDecayTopRadiation().

284 {
285  const reco::GenParticle* cand=nullptr;
286  if( singleLepton(excludeTauLeptons) ){
287  const reco::GenParticleCollection& partsColl = *parts_;
288  const reco::GenParticle& singleLep = *singleLepton(excludeTauLeptons);
289  for( unsigned int i = 0; i < partsColl.size(); ++i ){
290  if( std::abs(partsColl[i].pdgId())==TopDecayID::tID &&
291  reco::flavour(singleLep)!=reco::flavour(partsColl[i]) ){
292  cand = &partsColl[i];
293  }
294  }
295  }
296  return cand;
297 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
static const int tID
Definition: TopGenEvent.h:13
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
const reco::GenParticle * singleLepton(bool excludeTauLeptons=false) const
return single lepton if available; 0 else
Definition: TtGenEvent.cc:102
std::vector< const reco::GenParticle * > TtGenEvent::leptonicDecayTopRadiation ( bool  excludeTauLeptons = false) const

gluons as radiated from the leptonicly decaying top quark

Definition at line 299 of file TtGenEvent.cc.

References leptonicDecayTop(), common_cff::pdgId, TopGenEvent::radiatedGluons(), and TopDecayID::tID.

Referenced by hadronicDecayQuarkBar().

299  {
300  if( leptonicDecayTop(excludeTauLeptons) ){
301  return (leptonicDecayTop(excludeTauLeptons)->pdgId()>0 ? radiatedGluons(TopDecayID::tID) : radiatedGluons(-TopDecayID::tID));
302  }
303  std::vector<const reco::GenParticle*> rad;
304  return (rad);
305 }
const reco::GenParticle * leptonicDecayTop(bool excludeTauLeptons=false) const
get top of leptonic decay branch
Definition: TtGenEvent.cc:283
static const int tID
Definition: TopGenEvent.h:13
std::vector< const reco::GenParticle * > radiatedGluons(int pdgId) const
return radiated gluons from particle with pdgId
Definition: TopGenEvent.cc:199
const reco::GenParticle * TtGenEvent::leptonicDecayW ( bool  excludeTauLeptons = false) const

get W of leptonic decay branch

Definition at line 265 of file TtGenEvent.cc.

References funct::abs(), reco::flavour(), mps_fire::i, TopGenEvent::parts_, common_cff::pdgId, singleLepton(), and TopDecayID::WID.

Referenced by TtSemiEvtSolution::getGenLepW(), and isSemiLeptonic().

266 {
267  const reco::GenParticle* cand=nullptr;
268  if( singleLepton(excludeTauLeptons) ){
269  const reco::GenParticleCollection& partsColl = *parts_;
270  const reco::GenParticle& singleLep = *singleLepton(excludeTauLeptons);
271  for (unsigned int i = 0; i < partsColl.size(); ++i) {
272  if (std::abs(partsColl[i].pdgId())==TopDecayID::WID &&
273  reco::flavour(singleLep) == - reco::flavour(partsColl[i])) {
274  // PDG Id:13=mu- 24=W+ (+24)->(-13) (-24)->(+13) opposite sign
275  cand = &partsColl[i];
276  }
277  }
278  }
279  return cand;
280 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const int WID
Definition: TopGenEvent.h:18
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
const reco::GenParticle * singleLepton(bool excludeTauLeptons=false) const
return single lepton if available; 0 else
Definition: TtGenEvent.cc:102
const reco::GenParticle * TtGenEvent::neutrino ( bool  excludeTauLeptons = false) const

get neutrino for semi-leptonic or full leptonic decays

Definition at line 118 of file TtGenEvent.cc.

References funct::abs(), reco::flavour(), mps_fire::i, reco::isNeutrino(), TopGenEvent::parts_, common_cff::pdgId, and TopDecayID::WID.

Referenced by TtFullLepHypGenMatch::buildMatchingNeutrinos(), TtDilepEvtSolution::getGenN(), and hadronicDecayQuarkBar().

119 {
120  const reco::GenParticle* cand=nullptr;
121  const reco::GenParticleCollection & partsColl = *parts_;
122  for (unsigned int i = 0; i < partsColl.size(); ++i) {
123  if (reco::isNeutrino(partsColl[i]) && partsColl[i].mother() &&
124  std::abs(partsColl[i].mother()->pdgId())==TopDecayID::WID) {
125  if(reco::flavour(partsColl[i])>0){
126  cand = &partsColl[i];
127  }
128  }
129  }
130  return cand;
131 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
bool isNeutrino(const Candidate &part)
Definition: pdgIdUtils.h:25
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const int WID
Definition: TopGenEvent.h:18
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
const reco::GenParticle * TtGenEvent::neutrinoBar ( bool  excludeTauLeptons = false) const

get anti-neutrino for semi-leptonic or full leptonic decays

Definition at line 134 of file TtGenEvent.cc.

References funct::abs(), reco::flavour(), mps_fire::i, reco::isNeutrino(), TopGenEvent::parts_, common_cff::pdgId, and TopDecayID::WID.

Referenced by TtFullLepHypGenMatch::buildMatchingNeutrinos(), TtDilepEvtSolution::getGenNbar(), and hadronicDecayQuarkBar().

135 {
136  const reco::GenParticle* cand=nullptr;
137  const reco::GenParticleCollection & partsColl = *parts_;
138  for (unsigned int i = 0; i < partsColl.size(); ++i) {
139  if (reco::isNeutrino(partsColl[i]) && partsColl[i].mother() &&
140  std::abs(partsColl[i].mother()->pdgId())==TopDecayID::WID) {
141  if(reco::flavour(partsColl[i])<0){
142  cand = &partsColl[i];
143  }
144  }
145  }
146  return cand;
147 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
bool isNeutrino(const Candidate &part)
Definition: pdgIdUtils.h:25
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const int WID
Definition: TopGenEvent.h:18
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
WDecay::LeptonType TtGenEvent::semiLeptonicChannel ( ) const

return decay channel; all leptons including taus are allowed

Definition at line 39 of file TtGenEvent.cc.

References funct::abs(), TopDecayID::elecID, isSemiLeptonic(), WDecay::kElec, WDecay::kMuon, WDecay::kNone, WDecay::kTau, TopDecayID::muonID, common_cff::pdgId, singleLepton(), and TopDecayID::tauID.

Referenced by TtSemiLepSignalSelMVATrainer::analyze(), TtSemiLepJetCombMVATrainer::analyze(), isFullLeptonic(), and isSemiLeptonic().

40 {
42  if( isSemiLeptonic() && singleLepton() ){
46  }
47  return type;
48 }
type
Definition: HCALResponse.h:21
bool isSemiLeptonic(bool excludeTauLeptons=false) const
check if the event can be classified as semi-laptonic
Definition: TtGenEvent.h:38
static const int tauID
Definition: TopGenEvent.h:21
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const int muonID
Definition: TopGenEvent.h:20
static const int elecID
Definition: TopGenEvent.h:19
const reco::GenParticle * singleLepton(bool excludeTauLeptons=false) const
return single lepton if available; 0 else
Definition: TtGenEvent.cc:102
const reco::GenParticle * TtGenEvent::singleLepton ( bool  excludeTauLeptons = false) const

return single lepton if available; 0 else

Definition at line 102 of file TtGenEvent.cc.

References funct::abs(), mps_fire::i, reco::isLepton(), isSemiLeptonic(), TopGenEvent::parts_, common_cff::pdgId, and TopDecayID::WID.

Referenced by TtSemiLepHypGenMatch::findMatchingLepton(), TtSemiEvtSolution::getGenLepl(), hadronicDecayB(), hadronicDecayQuark(), hadronicDecayTop(), hadronicDecayW(), isSemiLeptonic(), leptonicDecayB(), leptonicDecayTop(), leptonicDecayW(), TtDilepLRSignalSelObservables::operator()(), and semiLeptonicChannel().

103 {
104  const reco::GenParticle* cand = nullptr;
105  if( isSemiLeptonic(excludeTauLeptons) ){
106  const reco::GenParticleCollection& partsColl = *parts_;
107  for (unsigned int i = 0; i < partsColl.size(); ++i) {
108  if (reco::isLepton(partsColl[i]) && partsColl[i].mother() &&
109  std::abs(partsColl[i].mother()->pdgId())==TopDecayID::WID) {
110  cand = &partsColl[i];
111  }
112  }
113  }
114  return cand;
115 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
bool isSemiLeptonic(bool excludeTauLeptons=false) const
check if the event can be classified as semi-laptonic
Definition: TtGenEvent.h:38
bool isLepton(const Candidate &part)
Definition: pdgIdUtils.h:19
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const int WID
Definition: TopGenEvent.h:18
const reco::GenParticle * TtGenEvent::singleNeutrino ( bool  excludeTauLeptons = false) const

return single neutrino if available; 0 else

Definition at line 150 of file TtGenEvent.cc.

References funct::abs(), mps_fire::i, reco::isNeutrino(), isSemiLeptonic(), TopGenEvent::parts_, common_cff::pdgId, and TopDecayID::WID.

Referenced by ResolutionCreator::analyze(), TtSemiEvtSolution::getGenLepn(), and isSemiLeptonic().

151 {
152  const reco::GenParticle* cand=nullptr;
153  if( isSemiLeptonic(excludeTauLeptons) ) {
154  const reco::GenParticleCollection & partsColl = *parts_;
155  for (unsigned int i = 0; i < partsColl.size(); ++i) {
156  if (reco::isNeutrino(partsColl[i]) && partsColl[i].mother() &&
157  std::abs(partsColl[i].mother()->pdgId())==TopDecayID::WID) {
158  cand = &partsColl[i];
159  }
160  }
161  }
162  return cand;
163 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
reco::GenParticleRefProd parts_
reference to the top decay chain (has to be kept in the event!)
Definition: TopGenEvent.h:115
bool isSemiLeptonic(bool excludeTauLeptons=false) const
check if the event can be classified as semi-laptonic
Definition: TtGenEvent.h:38
bool isNeutrino(const Candidate &part)
Definition: pdgIdUtils.h:25
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const int WID
Definition: TopGenEvent.h:18
const math::XYZTLorentzVector* TtGenEvent::topPair ( ) const
inline

return combined 4-vector of top and topBar

Definition at line 87 of file TtGenEvent.h.

Referenced by TopGenEventAnalyzer::analyze().

87 { return isTtBar() ? &topPair_ : nullptr; };
math::XYZTLorentzVector topPair_
combined 4-vector of top and topBar
Definition: TtGenEvent.h:87
bool isTtBar() const
check if the event can be classified as ttbar
Definition: TtGenEvent.h:30

Member Data Documentation

math::XYZTLorentzVector TtGenEvent::topPair_
protected

combined 4-vector of top and topBar

Definition at line 87 of file TtGenEvent.h.

Referenced by TtGenEvent().