00001 #ifndef TopObjects_TtSemiLeptonicEvent_h
00002 #define TopObjects_TtSemiLeptonicEvent_h
00003
00004 #include "AnalysisDataFormats/TopObjects/interface/TtEvent.h"
00005
00006
00007 namespace TtSemiLepDaughter{
00010 static const std::string Nu ="Nu" , Lep ="Lep" , LepW="LepW", LepB="LepB", LepTop="LepTop";
00011 static const std::string HadQ="HadQ", HadP="HadP", HadW="HadW", HadB="HadB", HadTop="HadTop";
00012 }
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 class TtSemiLeptonicEvent: public TtEvent {
00027
00028 public:
00029
00031 TtSemiLeptonicEvent(){};
00033 virtual ~TtSemiLeptonicEvent(){};
00034
00036 const reco::Candidate* hadronicTop(const HypoClassKey& key, const unsigned& cmb=0) const { return !isHypoValid(key,cmb) ? 0 : eventHypo (key,cmb). daughter(TtSemiLepDaughter::HadTop); };
00038 const reco::Candidate* hadronicB (const HypoClassKey& key, const unsigned& cmb=0) const { return !isHypoValid(key,cmb) ? 0 : hadronicTop(key,cmb)->daughter(TtSemiLepDaughter::HadB ); };
00040 const reco::Candidate* hadronicW (const HypoClassKey& key, const unsigned& cmb=0) const { return !isHypoValid(key,cmb) ? 0 : hadronicTop(key,cmb)->daughter(TtSemiLepDaughter::HadW ); };
00042 const reco::Candidate* lightQuarkP(const HypoClassKey& key, const unsigned& cmb=0) const { return !isHypoValid(key,cmb) ? 0 : hadronicW (key,cmb)->daughter(TtSemiLepDaughter::HadP ); };
00044 const reco::Candidate* lightQuarkQ(const HypoClassKey& key, const unsigned& cmb=0) const { return !isHypoValid(key,cmb) ? 0 : hadronicW (key,cmb)->daughter(TtSemiLepDaughter::HadQ ); };
00046 const reco::Candidate* leptonicTop(const HypoClassKey& key, const unsigned& cmb=0) const { return !isHypoValid(key,cmb) ? 0 : eventHypo (key,cmb). daughter(TtSemiLepDaughter::LepTop); };
00048 const reco::Candidate* leptonicB (const HypoClassKey& key, const unsigned& cmb=0) const { return !isHypoValid(key,cmb) ? 0 : leptonicTop(key,cmb)->daughter(TtSemiLepDaughter::LepB ); };
00050 const reco::Candidate* leptonicW (const HypoClassKey& key, const unsigned& cmb=0) const { return !isHypoValid(key,cmb) ? 0 : leptonicTop(key,cmb)->daughter(TtSemiLepDaughter::LepW ); };
00052 const reco::Candidate* neutrino (const HypoClassKey& key, const unsigned& cmb=0) const { return !isHypoValid(key,cmb) ? 0 : leptonicW (key,cmb)->daughter(TtSemiLepDaughter::Nu ); };
00054 const reco::Candidate* lepton (const HypoClassKey& key, const unsigned& cmb=0) const { return !isHypoValid(key,cmb) ? 0 : leptonicW (key,cmb)->daughter(TtSemiLepDaughter::Lep ); };
00055
00057 const reco::GenParticle* genHadronicTop() const { return (!genEvt_ ? 0 : this->genEvent()->hadronicDecayTop()); };
00059 const reco::GenParticle* genHadronicW() const { return (!genEvt_ ? 0 : this->genEvent()->hadronicDecayW()); };
00061 const reco::GenParticle* genHadronicB() const { return (!genEvt_ ? 0 : this->genEvent()->hadronicDecayB()); };
00063 const reco::GenParticle* genHadronicP() const { return (!genEvt_ ? 0 : this->genEvent()->hadronicDecayQuark()); };
00065 const reco::GenParticle* genHadronicQ() const { return (!genEvt_ ? 0 : this->genEvent()->hadronicDecayQuarkBar()); };
00067 const reco::GenParticle* genLeptonicTop() const { return (!genEvt_ ? 0 : this->genEvent()->leptonicDecayTop()); };
00069 const reco::GenParticle* genLeptonicW() const { return (!genEvt_ ? 0 : this->genEvent()->leptonicDecayW()); };
00071 const reco::GenParticle* genLeptonicB() const { return (!genEvt_ ? 0 : this->genEvent()->leptonicDecayB()); };
00073 const reco::GenParticle* genLepton() const { return (!genEvt_ ? 0 : this->genEvent()->singleLepton()); };
00075 const reco::GenParticle* genNeutrino() const { return (!genEvt_ ? 0 : this->genEvent()->singleNeutrino()); };
00076
00079 void print();
00080 };
00081
00082 #endif