CMS 3D CMS Logo

Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes

TtEvent Class Reference

Base class to hold information for ttbar event interpretation. More...

#include <AnalysisDataFormats/TopObjects/interface/TtEvent.h>

Inheritance diagram for TtEvent:
TtFullHadronicEvent TtFullLeptonicEvent TtSemiLeptonicEvent

List of all members.

Classes

struct  HypoClassKeyStringToEnum
 a lightweight map for selection type string label and enum value More...

Public Types

enum  HypoClassKey {
  kGeom, kWMassMaxSumPt, kMaxSumPtWMass, kGenMatch,
  kMVADisc, kKinFit, kKinSolution, kWMassDeltaTopMass
}
 

supported classes of event hypotheses

More...
typedef std::pair
< reco::CompositeCandidate,
std::vector< int > > 
HypoCombPair
 pair of hypothesis and lepton jet combinatorics for a given hypothesis

Public Member Functions

void addEventHypo (const HypoClassKey &key, HypoCombPair hyp)
 add new hypotheses
int correspondingHypo (const std::string &key1, const unsigned &hyp1, const std::string &key2) const
 return the hypothesis in hypothesis class 'key2', which corresponds to hypothesis 'hyp1' in hypothesis class 'key1'
int correspondingHypo (const HypoClassKey &key1, const unsigned &hyp1, const HypoClassKey &key2) const
 return the hypothesis in hypothesis class 'key2', which corresponds to hypothesis 'hyp1' in hypothesis class 'key1'
const reco::CompositeCandidateeventHypo (const HypoClassKey &key, const unsigned &cmb=0) const
double fitChi2 (const unsigned &cmb=0) const
 return the chi2 of the kinemtaic fit of hypothesis 'cmb' if available; -1 else
double fitProb (const unsigned &cmb=0) const
 return the fit probability of hypothesis 'cmb' if available; -1 else
const edm::RefProd< TtGenEvent > & genEvent () const
 get TtGenEvent
double genMatchSumDR (const unsigned &cmb=0) const
 return the sum dr of the generator match if available; -1 else
double genMatchSumPt (const unsigned &cmb=0) const
 return the sum pt of the generator match if available; -1 else
bool isHypoAvailable (const std::string &key, const unsigned &cmb=0) const
bool isHypoAvailable (const HypoClassKey &key, const unsigned &cmb=0) const
 check if hypothesis 'cmb' is available within the hypothesis class
bool isHypoClassAvailable (const std::string &key) const
 check if hypothesis class 'key' was added to the event structure
bool isHypoClassAvailable (const HypoClassKey &key) const
 check if hypothesis class 'key' was added to the event structure
bool isHypoValid (const std::string &key, const unsigned &cmb=0) const
 check if hypothesis 'cmb' within the hypothesis class was valid; if not it lead to an empty CompositeCandidate
bool isHypoValid (const HypoClassKey &key, const unsigned &cmb=0) const
 check if hypothesis 'cmb' within the hypothesis class was valid; if not it lead to an empty CompositeCandidate
std::vector< int > jetLeptonCombination (const HypoClassKey &key, const unsigned &cmb=0) const
 return the vector of jet lepton combinatorics for a given hypothesis and class
std::vector< int > jetLeptonCombination (const std::string &key, const unsigned &cmb=0) const
 return the vector of jet lepton combinatorics for a given hypothesis and class
std::pair< WDecay::LeptonType,
WDecay::LeptonType
lepDecays () const
 get leptonic decay channels
double mvaDisc (const unsigned &cmb=0) const
 return the mva discriminant value of hypothesis 'cmb' if available; -1 else
std::string mvaMethod () const
 return the label of the mva method in use for the jet parton association (if kMVADisc is not available the string is empty)
unsigned int numberOfAvailableHypoClasses () const
 return number of available hypothesis classes
unsigned int numberOfAvailableHypos (const std::string &key) const
 return number of available hypotheses within a given hypothesis class
unsigned int numberOfAvailableHypos (const HypoClassKey &key) const
 return number of available hypotheses within a given hypothesis class
void printParticle (edm::LogInfo &log, const char *name, const reco::Candidate *cand) const
 print pt, eta, phi, mass of a given candidate into an existing LogInfo
void setFitChi2 (const std::vector< double > &val)
 set chi2 of kKinFit hypothesis
void setFitProb (const std::vector< double > &val)
 set fit probability of kKinFit hypothesis
void setGenEvent (const edm::Handle< TtGenEvent > &evt)
 set TtGenEvent
void setGenMatchSumDR (const std::vector< double > &val)
 set sum dr of kGenMatch hypothesis
void setGenMatchSumPt (const std::vector< double > &val)
 set sum pt of kGenMatch hypothesis
void setLepDecays (const WDecay::LeptonType &lepDecTop1, const WDecay::LeptonType &lepDecTop2)
 set leptonic decay channels
void setMvaDiscriminators (const std::vector< double > &val)
 set mva discriminant values of kMVADisc hypothesis
void setMvaMethod (const std::string &name)
 set label of mva method for kMVADisc hypothesis
 TtEvent ()
 empty constructor
virtual ~TtEvent ()
 default destructor

Protected Member Functions

HypoClassKey hypoClassKeyFromString (const std::string &label) const
 return the corresponding enum value from a string

Protected Attributes

std::map< HypoClassKey,
std::vector< HypoCombPair > > 
evtHyp_
std::vector< double > fitChi2_
 result of kinematic fit
std::vector< double > fitProb_
 result of kinematic fit
edm::RefProd< TtGenEventgenEvt_
 reference to TtGenEvent (has to be kept in the event!)
std::vector< double > genMatchSumDR_
 result of gen match
std::vector< double > genMatchSumPt_
 result of gen match
std::pair< WDecay::LeptonType,
WDecay::LeptonType
lepDecays_
 leptonic decay channels
std::vector< double > mvaDisc_
 MVA discriminants.
std::string mvaMethod_
 label of the MVA method

Detailed Description

Base class to hold information for ttbar event interpretation.

The structure holds information for ttbar event interpretation. All event hypotheses of different classes (user defined during production) and a reference to the TtGenEvent (if available). It provides access and administration.

Definition at line 27 of file TtEvent.h.


Member Typedef Documentation

typedef std::pair<reco::CompositeCandidate, std::vector<int> > TtEvent::HypoCombPair

pair of hypothesis and lepton jet combinatorics for a given hypothesis

Definition at line 33 of file TtEvent.h.


Member Enumeration Documentation

supported classes of event hypotheses

Enumerator:
kGeom 
kWMassMaxSumPt 
kMaxSumPtWMass 
kGenMatch 
kMVADisc 
kKinFit 
kKinSolution 
kWMassDeltaTopMass 

Definition at line 31 of file TtEvent.h.


Constructor & Destructor Documentation

TtEvent::TtEvent ( ) [inline]

empty constructor

Definition at line 43 of file TtEvent.h.

{};
virtual TtEvent::~TtEvent ( ) [inline, virtual]

default destructor

Definition at line 45 of file TtEvent.h.

{};

Member Function Documentation

void TtEvent::addEventHypo ( const HypoClassKey key,
HypoCombPair  hyp 
) [inline]

add new hypotheses

Definition at line 102 of file TtEvent.h.

References evtHyp_, and combine::key.

{ evtHyp_[key].push_back(hyp); };
int TtEvent::correspondingHypo ( const HypoClassKey key1,
const unsigned &  hyp1,
const HypoClassKey key2 
) const

return the hypothesis in hypothesis class 'key2', which corresponds to hypothesis 'hyp1' in hypothesis class 'key1'

Definition at line 7 of file TtEvent.cc.

References jetLeptonCombination(), and numberOfAvailableHypos().

{
  for(unsigned hyp2 = 0; hyp2 < this->numberOfAvailableHypos(key2); ++hyp2) {
    if( this->jetLeptonCombination(key1, hyp1) == this->jetLeptonCombination(key2, hyp2) )
      return hyp2;
  }
  return -1; // if no corresponding hypothesis was found
}
int TtEvent::correspondingHypo ( const std::string &  key1,
const unsigned &  hyp1,
const std::string &  key2 
) const [inline]

return the hypothesis in hypothesis class 'key2', which corresponds to hypothesis 'hyp1' in hypothesis class 'key1'

Definition at line 90 of file TtEvent.h.

References correspondingHypo(), and hypoClassKeyFromString().

Referenced by correspondingHypo().

const reco::CompositeCandidate& TtEvent::eventHypo ( const HypoClassKey key,
const unsigned &  cmb = 0 
) const [inline]

get event hypothesis; there can be more hypotheses of a certain class (sorted by quality); per default the best hypothesis is returned

Definition at line 51 of file TtEvent.h.

References evtHyp_, and first.

Referenced by TtSemiLeptonicEvent::hadronicDecayTop(), isHypoValid(), TtSemiLeptonicEvent::leptonicDecayTop(), TtFullHadronicEvent::top(), TtFullLeptonicEvent::top(), TtFullHadronicEvent::topBar(), and TtFullLeptonicEvent::topBar().

{ return (evtHyp_.find(key)->second)[cmb].first; };
double TtEvent::fitChi2 ( const unsigned &  cmb = 0) const [inline]

return the chi2 of the kinemtaic fit of hypothesis 'cmb' if available; -1 else

Definition at line 86 of file TtEvent.h.

References fitChi2_.

Referenced by TtFullHadronicEvent::print(), and TtSemiLeptonicEvent::print().

{ return (cmb<fitChi2_.size() ? fitChi2_[cmb] : -1.); }
double TtEvent::fitProb ( const unsigned &  cmb = 0) const [inline]

return the fit probability of hypothesis 'cmb' if available; -1 else

Definition at line 88 of file TtEvent.h.

References fitProb_.

Referenced by TtFullHadronicEvent::print(), and TtSemiLeptonicEvent::print().

{ return (cmb<fitProb_.size() ? fitProb_[cmb] : -1.); }
const edm::RefProd<TtGenEvent>& TtEvent::genEvent ( ) const [inline]
double TtEvent::genMatchSumDR ( const unsigned &  cmb = 0) const [inline]

return the sum dr of the generator match if available; -1 else

Definition at line 80 of file TtEvent.h.

References genMatchSumDR_.

Referenced by TtFullHadronicEvent::print(), TtSemiLeptonicEvent::print(), and TtFullLeptonicEvent::print().

{ return (cmb<genMatchSumDR_.size() ? genMatchSumDR_[cmb] : -1.); };
double TtEvent::genMatchSumPt ( const unsigned &  cmb = 0) const [inline]

return the sum pt of the generator match if available; -1 else

Definition at line 78 of file TtEvent.h.

References genMatchSumPt_.

Referenced by TtFullHadronicEvent::print(), TtSemiLeptonicEvent::print(), and TtFullLeptonicEvent::print().

{ return (cmb<genMatchSumPt_.size() ? genMatchSumPt_[cmb] : -1.); };
TtEvent::HypoClassKey TtEvent::hypoClassKeyFromString ( const std::string &  label) const [protected]

return the corresponding enum value from a string

Definition at line 18 of file TtEvent.cc.

References Exception, newFWLiteAna::found, i, kGenMatch, kGeom, kKinFit, kKinSolution, kMaxSumPtWMass, kMVADisc, kWMassDeltaTopMass, kWMassMaxSumPt, TtEvent::HypoClassKeyStringToEnum::label, TtEvent::HypoClassKeyStringToEnum::value, and relativeConstraints::value.

Referenced by TtFullLeptonicEvent::b(), TtFullHadronicEvent::b(), TtFullHadronicEvent::bBar(), TtFullLeptonicEvent::bBar(), correspondingHypo(), TtSemiLeptonicEvent::hadronicDecayB(), TtSemiLeptonicEvent::hadronicDecayQuark(), TtSemiLeptonicEvent::hadronicDecayQuarkBar(), TtSemiLeptonicEvent::hadronicDecayTop(), TtSemiLeptonicEvent::hadronicDecayW(), isHypoAvailable(), isHypoClassAvailable(), isHypoValid(), jetLeptonCombination(), TtFullLeptonicEvent::lepton(), TtFullLeptonicEvent::leptonBar(), TtSemiLeptonicEvent::leptonicDecayB(), TtSemiLeptonicEvent::leptonicDecayTop(), TtSemiLeptonicEvent::leptonicDecayW(), TtFullHadronicEvent::lightP(), TtFullHadronicEvent::lightPBar(), TtFullHadronicEvent::lightQ(), TtFullHadronicEvent::lightQBar(), TtFullLeptonicEvent::neutrino(), TtFullLeptonicEvent::neutrinoBar(), numberOfAvailableHypos(), TtSemiLeptonicEvent::numberOfRealNeutrinoSolutions(), TtSemiLeptonicEvent::singleLepton(), TtSemiLeptonicEvent::singleNeutrino(), TtFullHadronicEvent::top(), TtFullLeptonicEvent::top(), TtFullHadronicEvent::topBar(), TtFullLeptonicEvent::topBar(), TtFullLeptonicEvent::wMinus(), TtFullHadronicEvent::wMinus(), TtFullHadronicEvent::wPlus(), and TtFullLeptonicEvent::wPlus().

{
   static HypoClassKeyStringToEnum hypoClassKeyStringToEnumMap[] = {
      { "kGeom",              kGeom             },
      { "kWMassMaxSumPt",     kWMassMaxSumPt    },
      { "kMaxSumPtWMass",     kMaxSumPtWMass    },
      { "kGenMatch",          kGenMatch         },
      { "kMVADisc",           kMVADisc          },
      { "kKinFit",            kKinFit           },
      { "kKinSolution",       kKinSolution      },
      { "kWMassDeltaTopMass", kWMassDeltaTopMass},
      { 0, (HypoClassKey)-1 }
   };

   bool found = false;
   HypoClassKey value = (HypoClassKey)-1;
   for(int i = 0; hypoClassKeyStringToEnumMap[i].label && (!found); ++i){
     if(!strcmp(label.c_str(), hypoClassKeyStringToEnumMap[i].label)){
       found = true;
       value = hypoClassKeyStringToEnumMap[i].value;
     }
   }

   // in case of unrecognized selection type
   if(!found){
     throw cms::Exception("TtEventError") << label << " is not a recognized HypoClassKey";
   }
   return value;
}
bool TtEvent::isHypoAvailable ( const HypoClassKey key,
const unsigned &  cmb = 0 
) const [inline]

check if hypothesis 'cmb' is available within the hypothesis class

Definition at line 62 of file TtEvent.h.

References evtHyp_, and isHypoClassAvailable().

{ return isHypoClassAvailable(key) ? (cmb<evtHyp_.find(key)->second.size()) : false; };
bool TtEvent::isHypoAvailable ( const std::string &  key,
const unsigned &  cmb = 0 
) const [inline]
bool TtEvent::isHypoClassAvailable ( const std::string &  key) const [inline]

check if hypothesis class 'key' was added to the event structure

Definition at line 56 of file TtEvent.h.

References hypoClassKeyFromString(), and isHypoClassAvailable().

Referenced by isHypoAvailable(), and isHypoClassAvailable().

bool TtEvent::isHypoClassAvailable ( const HypoClassKey key) const [inline]

check if hypothesis class 'key' was added to the event structure

Definition at line 58 of file TtEvent.h.

References evtHyp_.

{ return (evtHyp_.find(key)!=evtHyp_.end()); };
bool TtEvent::isHypoValid ( const std::string &  key,
const unsigned &  cmb = 0 
) const [inline]
bool TtEvent::isHypoValid ( const HypoClassKey key,
const unsigned &  cmb = 0 
) const [inline]

check if hypothesis 'cmb' within the hypothesis class was valid; if not it lead to an empty CompositeCandidate

Definition at line 66 of file TtEvent.h.

References eventHypo(), isHypoAvailable(), and reco::CompositeCandidate::roles().

{ return isHypoAvailable(key, cmb) ? !eventHypo(key, cmb).roles().empty() : false; };
std::vector<int> TtEvent::jetLeptonCombination ( const std::string &  key,
const unsigned &  cmb = 0 
) const [inline]

return the vector of jet lepton combinatorics for a given hypothesis and class

Definition at line 74 of file TtEvent.h.

References hypoClassKeyFromString(), and jetLeptonCombination().

Referenced by correspondingHypo(), jetLeptonCombination(), TtFullHadronicEvent::print(), TtSemiLeptonicEvent::print(), and TtFullLeptonicEvent::print().

std::vector<int> TtEvent::jetLeptonCombination ( const HypoClassKey key,
const unsigned &  cmb = 0 
) const [inline]

return the vector of jet lepton combinatorics for a given hypothesis and class

Definition at line 76 of file TtEvent.h.

References evtHyp_, and edm::second().

{ return (evtHyp_.find(key)->second)[cmb].second; };
std::pair<WDecay::LeptonType, WDecay::LeptonType> TtEvent::lepDecays ( ) const [inline]

get leptonic decay channels

Definition at line 48 of file TtEvent.h.

References lepDecays_.

{ return lepDecays_; }
double TtEvent::mvaDisc ( const unsigned &  cmb = 0) const [inline]

return the mva discriminant value of hypothesis 'cmb' if available; -1 else

Definition at line 84 of file TtEvent.h.

References mvaDisc_.

Referenced by TtFullHadronicEvent::print(), and TtSemiLeptonicEvent::print().

{ return (cmb<mvaDisc_.size() ? mvaDisc_[cmb] : -1.); }
std::string TtEvent::mvaMethod ( ) const [inline]

return the label of the mva method in use for the jet parton association (if kMVADisc is not available the string is empty)

Definition at line 82 of file TtEvent.h.

References mvaMethod_.

Referenced by TtFullHadronicEvent::print(), and TtSemiLeptonicEvent::print().

{ return mvaMethod_; }
unsigned int TtEvent::numberOfAvailableHypoClasses ( ) const [inline]

return number of available hypothesis classes

Definition at line 68 of file TtEvent.h.

References evtHyp_.

Referenced by TtFullHadronicEvent::print(), TtSemiLeptonicEvent::print(), and TtFullLeptonicEvent::print().

{ return evtHyp_.size(); };
unsigned int TtEvent::numberOfAvailableHypos ( const std::string &  key) const [inline]

return number of available hypotheses within a given hypothesis class

Definition at line 70 of file TtEvent.h.

References hypoClassKeyFromString(), and numberOfAvailableHypos().

Referenced by correspondingHypo(), numberOfAvailableHypos(), TtFullHadronicEvent::print(), TtSemiLeptonicEvent::print(), and TtFullLeptonicEvent::print().

unsigned int TtEvent::numberOfAvailableHypos ( const HypoClassKey key) const [inline]

return number of available hypotheses within a given hypothesis class

Definition at line 72 of file TtEvent.h.

References evtHyp_, and isHypoAvailable().

{ return isHypoAvailable(key) ? evtHyp_.find(key)->second.size() : 0; };
void TtEvent::printParticle ( edm::LogInfo log,
const char *  name,
const reco::Candidate cand 
) const

print pt, eta, phi, mass of a given candidate into an existing LogInfo

Definition at line 50 of file TtEvent.cc.

References reco::Candidate::eta(), reco::Candidate::mass(), reco::Candidate::phi(), and reco::Candidate::pt().

Referenced by TtFullHadronicEvent::print(), TtSemiLeptonicEvent::print(), and TtFullLeptonicEvent::print().

{
  if(!cand) {
    log << std::setw(15) << name << ": not available!\n";
    return;
  }
  log << std::setprecision(3) << setiosflags(std::ios::fixed | std::ios::showpoint);
  log << std::setw(15) << name         << ": "
      << std::setw( 7) << cand->pt()   << "; "
      << std::setw( 7) << cand->eta()  << "; "
      << std::setw( 7) << cand->phi()  << "; "
      << resetiosflags(std::ios::fixed | std::ios::showpoint) << setiosflags(std::ios::scientific)
      << std::setw(10) << cand->mass() << "\n";
  log << resetiosflags(std::ios::scientific);
}
void TtEvent::setFitChi2 ( const std::vector< double > &  val) [inline]

set chi2 of kKinFit hypothesis

Definition at line 112 of file TtEvent.h.

References fitChi2_.

{ fitChi2_=val; };
void TtEvent::setFitProb ( const std::vector< double > &  val) [inline]

set fit probability of kKinFit hypothesis

Definition at line 114 of file TtEvent.h.

References fitProb_.

{ fitProb_=val; };
void TtEvent::setGenEvent ( const edm::Handle< TtGenEvent > &  evt) [inline]

set TtGenEvent

Definition at line 100 of file TtEvent.h.

References genEvt_.

void TtEvent::setGenMatchSumDR ( const std::vector< double > &  val) [inline]

set sum dr of kGenMatch hypothesis

Definition at line 106 of file TtEvent.h.

References genMatchSumDR_.

void TtEvent::setGenMatchSumPt ( const std::vector< double > &  val) [inline]

set sum pt of kGenMatch hypothesis

Definition at line 104 of file TtEvent.h.

References genMatchSumPt_.

void TtEvent::setLepDecays ( const WDecay::LeptonType lepDecTop1,
const WDecay::LeptonType lepDecTop2 
) [inline]

set leptonic decay channels

Definition at line 98 of file TtEvent.h.

References lepDecays_.

{ lepDecays_=std::make_pair(lepDecTop1, lepDecTop2); };
void TtEvent::setMvaDiscriminators ( const std::vector< double > &  val) [inline]

set mva discriminant values of kMVADisc hypothesis

Definition at line 110 of file TtEvent.h.

References mvaDisc_.

{ mvaDisc_=val; };
void TtEvent::setMvaMethod ( const std::string &  name) [inline]

set label of mva method for kMVADisc hypothesis

Definition at line 108 of file TtEvent.h.

References mvaMethod_, and mergeVDriftHistosByStation::name.


Member Data Documentation

std::map<HypoClassKey, std::vector<HypoCombPair> > TtEvent::evtHyp_ [protected]

map of hypotheses; for each HypoClassKey a vector of hypothesis and their lepton jet combinatorics are kept

Definition at line 124 of file TtEvent.h.

Referenced by addEventHypo(), eventHypo(), isHypoAvailable(), isHypoClassAvailable(), jetLeptonCombination(), numberOfAvailableHypoClasses(), numberOfAvailableHypos(), TtFullHadronicEvent::print(), TtSemiLeptonicEvent::print(), and TtFullLeptonicEvent::print().

std::vector<double> TtEvent::fitChi2_ [protected]

result of kinematic fit

Definition at line 127 of file TtEvent.h.

Referenced by fitChi2(), and setFitChi2().

std::vector<double> TtEvent::fitProb_ [protected]

result of kinematic fit

Definition at line 129 of file TtEvent.h.

Referenced by fitProb(), and setFitProb().

std::vector<double> TtEvent::genMatchSumDR_ [protected]

result of gen match

Definition at line 133 of file TtEvent.h.

Referenced by genMatchSumDR(), and setGenMatchSumDR().

std::vector<double> TtEvent::genMatchSumPt_ [protected]

result of gen match

Definition at line 131 of file TtEvent.h.

Referenced by genMatchSumPt(), and setGenMatchSumPt().

leptonic decay channels

Definition at line 114 of file TtEvent.h.

Referenced by lepDecays(), and setLepDecays().

std::vector<double> TtEvent::mvaDisc_ [protected]

MVA discriminants.

Definition at line 137 of file TtEvent.h.

Referenced by mvaDisc(), and setMvaDiscriminators().

std::string TtEvent::mvaMethod_ [protected]

label of the MVA method

Definition at line 135 of file TtEvent.h.

Referenced by mvaMethod(), and setMvaMethod().