16 : invert_(cfg.getParameter<bool>(
"invert")),
17 allowElectron_(
false),
28 allowedTauDecays.
existsAs<
bool>(
"oneProng") || allowedTauDecays.
existsAs<
bool>(
"threeProng"));
31 (allowedTauDecays.
existsAs<
bool>(
"electron") ? allowedTauDecays.
getParameter<
bool>(
"electron") :
false);
34 (allowedTauDecays.
existsAs<
bool>(
"oneProng") ? allowedTauDecays.
getParameter<
bool>(
"oneProng") :
false);
36 (allowedTauDecays.
existsAs<
bool>(
"threeProng") ? allowedTauDecays.
getParameter<
bool>(
"threeProng") :
false);
43 decayBranchA_.push_back(decayBranchA.getParameter<
bool>(
"electron"));
44 decayBranchA_.push_back(decayBranchA.getParameter<
bool>(
"muon"));
45 decayBranchA_.push_back(decayBranchA.getParameter<
bool>(
"tau"));
64 unsigned int iLep = 0;
65 unsigned int iTop = 0, iBeauty = 0, iElec = 0, iMuon = 0, iTau = 0;
66 for (reco::GenParticleCollection::const_iterator top = parts.begin(); top != parts.end(); ++top) {
102 log <<
"----------------------"
104 <<
" iTop : " << iTop <<
"\n"
105 <<
" iBeauty : " << iBeauty <<
"\n"
106 <<
" iElec : " << iElec <<
"\n"
107 <<
" iMuon : " << iMuon <<
"\n"
108 <<
" iTau : " << iTau + iLep;
110 log <<
" (" << iTau <<
")\n";
114 log <<
"- - - - - - - - - - - "
117 iLep += iElec + iMuon + iTau;
121 if ((iTop == 2) && (iBeauty == 2)) {
122 if (channel == iLep) {
139 if (iElec + iMuon + iTau != channel) {
142 if ((iElec == 2) || (iMuon == 2) || (iTau == 2)) {
174 return (
std::abs(part->pdgId()) == pdgId) ?
true :
false;
189 return (part.
charge() != 0);
200 bool electronTau =
false;
201 bool muonTau =
false;
202 unsigned int nch = 0;
209 if (daughter->pdgId() == tau.
pdgId()) {
220 (
allow1Prong_ && !electronTau && !muonTau && nch == 1) ||
221 (
allow3Prong_ && !electronTau && !muonTau && nch == 3));
Log< level::Info, true > LogVerbatim
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
static std::vector< std::string > checklist log
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
Decay decayBranchA_
top decay branch 1
virtual int status() const =0
status word
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
bool search(reco::GenParticleCollection::const_iterator &part, int pdgId, std::string &inputType) const
search for particle with pdgId in given listing (for top)
static const unsigned int kDecayChannels
static constexpr int verbose
bool restrictTauDecays_
restrict tau decays
const_iterator end() const
last daughter const_iterator
Abs< T >::type abs(const T &t)
virtual int charge() const =0
electric charge
TtDecayChannelSelector(const edm::ParameterSet &)
std contructor
unsigned int countProngs(const reco::Candidate &part) const
count the number of charged particles for tau decays
Decay decayBranchB_
top decay branch 2
virtual int pdgId() const =0
PDG identifier.
bool allowElectron_
allow tau decays into electron
bool tauDecay(const reco::Candidate &) const
check tau decay to be leptonic, 1-prong or 3-prong
bool allow3Prong_
allow 2-prong tau decays
bool allowMuon_
allow tau decays into muon
unsigned int decayChannel() const
return decay channel to select for from configuration
unsigned int checkSum(const Decay &vec) const
T getParameter(std::string const &) const
~TtDecayChannelSelector()
default destructor
bool operator()(const reco::GenParticleCollection &parts, std::string inputType) const
operator for decay channel selection
static const std::string kGenParticles
const_iterator begin() const
first daughter const_iterator
bool allow1Prong_
allow 1-prong tau decays
Log< level::Warning, false > LogWarning
bool invert_
invert selection