14 log <<
"++++++++++++++++++++++++++++++++++++++++++++++++++ \n";
17 if( !
genEvt_ ) log <<
" TtGenEvent not available! \n";
19 log <<
" TtGenEvent says: ";
20 if( !this->
genEvent()->isTtBar() ) log <<
"Not TtBar";
21 else if( this->
genEvent()->isFullHadronic() ) log <<
"Fully Hadronic TtBar";
22 else if( this->
genEvent()->isFullLeptonic() ) log <<
"Fully Leptonic TtBar";
23 else if( this->
genEvent()->isSemiLeptonic() ) {
24 log <<
"Semi-leptonic TtBar, ";
25 switch( this->
genEvent()->semiLeptonicChannel() ) {
29 default : log <<
"Unknown" ;
break;
40 log <<
" - JetLepComb: ";
53 typedef std::map<HypoClassKey, std::vector<HypoCombPair> >::const_iterator EventHypo;
54 for(EventHypo hyp =
evtHyp_.begin(); hyp !=
evtHyp_.end(); ++hyp) {
57 log <<
"-------------------------------------------------- \n";
59 case kGeom : log <<
" Geom" ;
break;
62 case kGenMatch : log <<
" GenMatch" ;
break;
63 case kMVADisc : log <<
" MVADisc" ;
break;
64 case kKinFit : log <<
" KinFit" ;
break;
65 case kKinSolution : log <<
" KinSolution not (yet) applicable to TtSemiLeptonicEvent --> skipping";
continue;
67 case kHitFit : log <<
" HitFit" ;
break;
68 default : log <<
" Unknown TtEvent::HypoClassKey provided --> skipping" ;
continue;
70 log <<
"-Hypothesis: \n";
75 log <<
" * Number of stored jet combinations: " << nOfHyp <<
"\n";
77 log <<
" The following was found to be the best one:\n";
82 for(
unsigned cmb=0; cmb<nOfHyp; cmb++) {
85 log <<
" * Not valid! \n";
89 log <<
" * JetLepComb:";
91 for(
unsigned int iJet = 0; iJet < jets.size(); iJet++) {
92 log <<
" " << jets[iJet] <<
" ";
98 <<
" * Sum(DeltaPt): " << this->
genMatchSumPt(cmb) <<
" \n";
break;
100 <<
" * Discrim.: " << this->
mvaDisc(cmb) <<
" \n";
break;
101 case kKinFit : log <<
" * Chi^2 : " << this->
fitChi2(cmb) <<
" \n" 102 <<
" * Prob(Chi^2): " << this->
fitProb(cmb) <<
" \n";
break;
104 <<
" * Prob(Chi^2): " << this->
hitFitProb(cmb) <<
" \n" 105 <<
" * Top mass : " << this->
hitFitMT(cmb) <<
" +/- " << this->
hitFitSigMT(cmb) <<
" \n";
break;
109 if(verbosity%10 >= 2) {
110 log <<
" * Candidates (pt; eta; phi; mass):\n";
111 if(verbosity%10 >= 3)
115 if(verbosity%10 >= 3) {
122 if(verbosity%10 >= 3) {
132 log <<
"++++++++++++++++++++++++++++++++++++++++++++++++++";
const reco::GenParticle * leptonicDecayTop() const
get leptonic top of the TtGenEvent
HypoClassKey
supported classes of event hypotheses
const edm::RefProd< TtGenEvent > & genEvent() const
get TtGenEvent
const math::XYZTLorentzVector * topPair() const
get combined 4-vector of top and topBar from the TtGenEvent
unsigned int numberOfAvailableHypos(const std::string &key) const
return number of available hypotheses within a given hypothesis class
const reco::GenParticle * leptonicDecayB() const
get leptonic b of the TtGenEvent
unsigned int numberOfAvailableHypoClasses() const
return number of available hypothesis classes
const reco::GenParticle * hadronicDecayB() const
get hadronic b of the TtGenEvent
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
double fitChi2(const unsigned &cmb=0) const
return the chi2 of the kinematic fit of hypothesis 'cmb' if available; -1 else
const reco::GenParticle * singleLepton() const
get lepton top of the TtGenEvent
double genMatchSumDR(const unsigned &cmb=0) const
return the sum dr of the generator match if available; -1 else
int numberOfConsideredJets(const std::string &key) const
return number of jets that were considered when building a given hypothesis
double hitFitMT(const unsigned &cmb=0) const
return the hitfit top mass of hypothesis 'cmb' if available; -1 else
const reco::GenParticle * leptonicDecayW() const
get leptonic W of the TtGenEvent
const reco::GenParticle * hadronicDecayW() const
get hadronic W of the TtGenEvent
void print(const int verbosity=1) const
double mvaDisc(const unsigned &cmb=0) const
return the mva discriminant value of hypothesis 'cmb' if available; -1 else
const reco::GenParticle * hadronicDecayQuarkBar() const
get hadronic light quark of the TtGenEvent
edm::RefProd< TtGenEvent > genEvt_
reference to TtGenEvent (has to be kept in the event!)
double hitFitChi2(const unsigned &cmb=0) const
return the hitfit chi2 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
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 Composite...
const reco::GenParticle * hadronicDecayTop() const
get hadronic top of the TtGenEvent
double genMatchSumPt(const unsigned &cmb=0) const
return the sum pt of the generator match if available; -1 else
double hitFitProb(const unsigned &cmb=0) const
return the hitfit probability 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 availabl...
const reco::GenParticle * hadronicDecayQuark() const
get hadronic light quark of the TtGenEvent
std::map< HypoClassKey, std::vector< HypoCombPair > > evtHyp_
const int numberOfRealNeutrinoSolutions(const HypoClassKey &key) const
get number of real neutrino solutions for a given hypo 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
const reco::GenParticle * singleNeutrino() const
get neutrino of the TtGenEvent
double hitFitSigMT(const unsigned &cmb=0) const
return the hitfit top mass uncertainty of hypothesis 'cmb' if available; -1 else