CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TtFullHadEvtPartons.cc
Go to the documentation of this file.
3 
5 
6 TtFullHadEvtPartons::TtFullHadEvtPartons(const std::vector<std::string>& partonsToIgnore) {
7  // default: use all partons
8  for (unsigned int i = 0; i < 6; i++)
9  ignorePartons_.push_back(false);
10  // read vector of strings and flag partons to be ignored
11  for (std::vector<std::string>::const_iterator str = partonsToIgnore.begin(); str != partonsToIgnore.end(); ++str) {
12  if ((*str) == "LightQ")
13  ignorePartons_[LightQ] = true;
14  else if ((*str) == "LightQBar")
15  ignorePartons_[LightQBar] = true;
16  else if ((*str) == "B")
17  ignorePartons_[B] = true;
18  else if ((*str) == "LightP")
19  ignorePartons_[LightP] = true;
20  else if ((*str) == "LightPBar")
21  ignorePartons_[LightPBar] = true;
22  else if ((*str) == "BBar")
23  ignorePartons_[BBar] = true;
24  else
25  throw cms::Exception("Configuration")
26  << "The following string in partonsToIgnore is not supported: " << (*str) << "\n";
27  }
28 }
29 
30 std::vector<const reco::Candidate*> TtFullHadEvtPartons::vec(const TtGenEvent& genEvt) const {
31  std::vector<const reco::Candidate*> vec;
32 
33  if (genEvt.isFullHadronic()) {
34  // fill vector with partons from genEvent
35  // (use enum for positions of the partons in the vector)
36  vec.resize(6);
39  vec[B] = genEvt.b() ? genEvt.b() : dummyCandidatePtr();
42  vec[BBar] = genEvt.bBar() ? genEvt.bBar() : dummyCandidatePtr();
43  } else {
44  // fill vector with dummy objects if the event is not fully-hadronic ttbar
45  for (unsigned i = 0; i < 6; i++)
46  vec.push_back(dummyCandidatePtr());
47  }
48 
49  // erase partons from vector if they where chosen to be ignored
50  prune(vec);
51 
52  return vec;
53 }
const reco::GenParticle * b() const
return b quark if available; 0 else
Definition: TopGenEvent.h:97
std::vector< const reco::Candidate * > vec(const TtGenEvent &genEvt) const override
return vector of partons in the order defined in the corresponding enum
TtFullHadEvtPartons(const std::vector< std::string > &partonsToIgnore=std::vector< std::string >())
default constructor
const reco::GenParticle * daughterQuarkOfWPlus(bool invertQuarkCharge=false, bool invertBosonCharge=false) const
return quark daughter quark of W boson
Definition: TopGenEvent.cc:150
const reco::GenParticle * bBar() const
return anti-b quark if available; 0 else
Definition: TopGenEvent.h:99
void prune(std::vector< const reco::Candidate * > &vec) const
erase partons from vector if they where chosen to be ignored
bool isFullHadronic(bool excludeTauLeptons=false) const
check if the event can be classified as full hadronic
Definition: TtGenEvent.h:34
Class derived from the TopGenEvent for ttbar events.
Definition: TtGenEvent.h:18
std::vector< bool > ignorePartons_
flag partons that were chosen not to be used
const reco::GenParticle * daughterQuarkBarOfWMinus() const
return anti-quark daughter of anti-W boson
Definition: TopGenEvent.h:76
const reco::GenParticle * daughterQuarkBarOfWPlus() const
return anti-quark daughter of W boson
Definition: TopGenEvent.h:74
reco::Candidate * dummyCandidatePtr() const
return pointer to an empty reco::Candidate
#define str(s)
const reco::GenParticle * daughterQuarkOfWMinus() const
return quark daughter of anti-W boson
Definition: TopGenEvent.h:72