CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/TopQuarkAnalysis/TopJetCombination/interface/TtSemiLepJetCombEval.h

Go to the documentation of this file.
00001 #ifndef TtSemiLepJetCombEval_h
00002 #define TtSemiLepJetCombEval_h
00003 
00004 #include "PhysicsTools/MVAComputer/interface/Variable.h"
00005 #include "TopQuarkAnalysis/TopJetCombination/interface/TtSemiLepJetComb.h"
00006 
00007 // ----------------------------------------------------------------------
00008 // common interface for the evaluation of multivariate analysis variables
00009 // for jet combinations in semi leptonic ttbar decays
00010 // used by the MVATrainer and MVAComputer
00011 // ----------------------------------------------------------------------
00012 
00013 inline void evaluateTtSemiLepJetComb(PhysicsTools::Variable::ValueList& values, const TtSemiLepJetComb& jetComb)
00014 {
00015   // ----------------------------------------------------------------------
00016   // mass, pt, eta, phi and theta of single candidates of the ttbar system
00017   // ----------------------------------------------------------------------
00018   // hadronic top quark
00019   values.add( "massHadTop" , jetComb.topVar(JetComb::kHad, JetComb::kMass ) );
00020   values.add( "ptHadTop"   , jetComb.topVar(JetComb::kHad, JetComb::kPt   ) );
00021   values.add( "etaHadTop"  , jetComb.topVar(JetComb::kHad, JetComb::kEta  ) );
00022   values.add( "phiHadTop"  , jetComb.topVar(JetComb::kHad, JetComb::kPhi  ) );
00023   values.add( "thetaHadTop", jetComb.topVar(JetComb::kHad, JetComb::kTheta) );
00024   // leptonic top quark
00025   values.add( "massLepTop" , jetComb.topVar(JetComb::kLep, JetComb::kMass ) );
00026   values.add( "ptLepTop"   , jetComb.topVar(JetComb::kLep, JetComb::kPt   ) );
00027   values.add( "etaLepTop"  , jetComb.topVar(JetComb::kLep, JetComb::kEta  ) );
00028   values.add( "phiLepTop"  , jetComb.topVar(JetComb::kLep, JetComb::kPhi  ) );
00029   values.add( "thetaLepTop", jetComb.topVar(JetComb::kLep, JetComb::kTheta) );
00030   // hadronic W boson
00031   values.add( "massHadW" , jetComb.wBosonVar(JetComb::kHad, JetComb::kMass ) );
00032   values.add( "ptHadW"   , jetComb.wBosonVar(JetComb::kHad, JetComb::kPt   ) );
00033   values.add( "etaHadW"  , jetComb.wBosonVar(JetComb::kHad, JetComb::kEta  ) );
00034   values.add( "phiHadW"  , jetComb.wBosonVar(JetComb::kHad, JetComb::kPhi  ) );
00035   values.add( "thetaHadW", jetComb.wBosonVar(JetComb::kHad, JetComb::kTheta) );
00036   // hadronic b quark
00037   values.add( "ptHadB"   , jetComb.bQuarkVar(JetComb::kHad, JetComb::kPt   ) );
00038   values.add( "etaHadB"  , jetComb.bQuarkVar(JetComb::kHad, JetComb::kEta  ) );
00039   values.add( "phiHadB"  , jetComb.bQuarkVar(JetComb::kHad, JetComb::kPhi  ) );
00040   values.add( "thetaHadB", jetComb.bQuarkVar(JetComb::kHad, JetComb::kTheta) );
00041   // leptonic b quark
00042   values.add( "ptLepB"   , jetComb.bQuarkVar(JetComb::kLep, JetComb::kPt   ) );
00043   values.add( "etaLepB"  , jetComb.bQuarkVar(JetComb::kLep, JetComb::kEta  ) );
00044   values.add( "phiLepB"  , jetComb.bQuarkVar(JetComb::kLep, JetComb::kPhi  ) );
00045   values.add( "thetaLepB", jetComb.bQuarkVar(JetComb::kLep, JetComb::kTheta) );
00046   // light quark
00047   values.add( "ptLightQ"   , jetComb.lightQVar(false, JetComb::kPt   ) );
00048   values.add( "etaLightQ"  , jetComb.lightQVar(false, JetComb::kEta  ) );
00049   values.add( "phiLightQ"  , jetComb.lightQVar(false, JetComb::kPhi  ) );
00050   values.add( "thetaLightQ", jetComb.lightQVar(false, JetComb::kTheta) );
00051   // light anti-quark
00052   values.add( "ptLightQBar"   , jetComb.lightQVar(true, JetComb::kPt   ) );
00053   values.add( "etaLightQBar"  , jetComb.lightQVar(true, JetComb::kEta  ) );
00054   values.add( "phiLightQBar"  , jetComb.lightQVar(true, JetComb::kPhi  ) );
00055   values.add( "thetaLightQBar", jetComb.lightQVar(true, JetComb::kTheta) );
00056   // ----------------------------------------------------------------------
00057   // compare two candidates of the ttbar system in DeltaM, DeltaR, DeltaPhi or DeltaTheta
00058   // ----------------------------------------------------------------------
00059   // the two top quarks
00060   values.add( "deltaMHadTopLepTop"    , jetComb.compareHadTopLepTop(JetComb::kDeltaM    ) );
00061   values.add( "deltaRHadTopLepTop"    , jetComb.compareHadTopLepTop(JetComb::kDeltaR    ) );
00062   values.add( "deltaPhiHadTopLepTop"  , jetComb.compareHadTopLepTop(JetComb::kDeltaPhi  ) );
00063   values.add( "deltaThetaHadTopLepTop", jetComb.compareHadTopLepTop(JetComb::kDeltaTheta) );
00064   // the two W bosons
00065   values.add( "deltaMHadWLepW"    , jetComb.compareHadWLepW(JetComb::kDeltaM    ) );
00066   values.add( "deltaRHadWLepW"    , jetComb.compareHadWLepW(JetComb::kDeltaR    ) );
00067   values.add( "deltaPhiHadWLepW"  , jetComb.compareHadWLepW(JetComb::kDeltaPhi  ) );
00068   values.add( "deltaThetaHadWLepW", jetComb.compareHadWLepW(JetComb::kDeltaTheta) );
00069   // the two b quarks
00070   values.add( "deltaRHadBLepB"    , jetComb.compareHadBLepB(JetComb::kDeltaR    ) );
00071   values.add( "deltaPhiHadBLepB"  , jetComb.compareHadBLepB(JetComb::kDeltaPhi  ) );
00072   values.add( "deltaThetaHadBLepB", jetComb.compareHadBLepB(JetComb::kDeltaTheta) );
00073   // the two light quarks
00074   values.add( "deltaRHadQHadQBar"    , jetComb.compareLightQuarks(JetComb::kDeltaR    ) );
00075   values.add( "deltaPhiHadQHadQBar"  , jetComb.compareLightQuarks(JetComb::kDeltaPhi  ) );
00076   values.add( "deltaThetaHadQHadQBar", jetComb.compareLightQuarks(JetComb::kDeltaTheta) );
00077   // the hadronic top and the hadronic W
00078   values.add( "deltaMHadTopHadW"    , jetComb.compareTopW(JetComb::kHad, JetComb::kHad, JetComb::kDeltaM    ) );
00079   values.add( "deltaRHadTopHadW"    , jetComb.compareTopW(JetComb::kHad, JetComb::kHad, JetComb::kDeltaR    ) );
00080   values.add( "deltaPhiHadTopHadW"  , jetComb.compareTopW(JetComb::kHad, JetComb::kHad, JetComb::kDeltaPhi  ) );
00081   values.add( "deltaThetaHadTopHadW", jetComb.compareTopW(JetComb::kHad, JetComb::kHad, JetComb::kDeltaTheta) );
00082   // the leptonic top and the leptonic W
00083   values.add( "deltaMLepTopLepW"    , jetComb.compareTopW(JetComb::kLep, JetComb::kLep, JetComb::kDeltaM    ) );
00084   values.add( "deltaRLepTopLepW"    , jetComb.compareTopW(JetComb::kLep, JetComb::kLep, JetComb::kDeltaR    ) );
00085   values.add( "deltaPhiLepTopLepW"  , jetComb.compareTopW(JetComb::kLep, JetComb::kLep, JetComb::kDeltaPhi  ) );
00086   values.add( "deltaThetaLepTopLepW", jetComb.compareTopW(JetComb::kLep, JetComb::kLep, JetComb::kDeltaTheta) );
00087   // the hadronic top and the leptonic W
00088   values.add( "deltaMHadTopLepW"    , jetComb.compareTopW(JetComb::kHad, JetComb::kLep, JetComb::kDeltaM    ) );
00089   values.add( "deltaRHadTopLepW"    , jetComb.compareTopW(JetComb::kHad, JetComb::kLep, JetComb::kDeltaR    ) );
00090   values.add( "deltaPhiHadTopLepW"  , jetComb.compareTopW(JetComb::kHad, JetComb::kLep, JetComb::kDeltaPhi  ) );
00091   values.add( "deltaThetaHadTopLepW", jetComb.compareTopW(JetComb::kHad, JetComb::kLep, JetComb::kDeltaTheta) );
00092   // the leptonic top and the hadronic W
00093   values.add( "deltaMLepTopHadW"    , jetComb.compareTopW(JetComb::kLep, JetComb::kHad, JetComb::kDeltaM    ) );
00094   values.add( "deltaRLepTopHadW"    , jetComb.compareTopW(JetComb::kLep, JetComb::kHad, JetComb::kDeltaR    ) );
00095   values.add( "deltaPhiLepTopHadW"  , jetComb.compareTopW(JetComb::kLep, JetComb::kHad, JetComb::kDeltaPhi  ) );
00096   values.add( "deltaThetaLepTopHadW", jetComb.compareTopW(JetComb::kLep, JetComb::kHad, JetComb::kDeltaTheta) );
00097   // the hadronic top and the hadronic b
00098   values.add( "deltaRHadTopHadB"    , jetComb.compareTopB(JetComb::kHad, JetComb::kHad, JetComb::kDeltaR    ) );
00099   values.add( "deltaPhiHadTopHadB"  , jetComb.compareTopB(JetComb::kHad, JetComb::kHad, JetComb::kDeltaPhi  ) );
00100   values.add( "deltaThetaHadTopHadB", jetComb.compareTopB(JetComb::kHad, JetComb::kHad, JetComb::kDeltaTheta) );
00101   // the leptonic top and the leptonic b
00102   values.add( "deltaRLepTopLepB"    , jetComb.compareTopB(JetComb::kLep, JetComb::kLep, JetComb::kDeltaR    ) );
00103   values.add( "deltaPhiLepTopLepB"  , jetComb.compareTopB(JetComb::kLep, JetComb::kLep, JetComb::kDeltaPhi  ) );
00104   values.add( "deltaThetaLepTopLepB", jetComb.compareTopB(JetComb::kLep, JetComb::kLep, JetComb::kDeltaTheta) );
00105   // the hadronic top and the leptonic b
00106   values.add( "deltaRHadTopLepB"    , jetComb.compareTopB(JetComb::kHad, JetComb::kLep, JetComb::kDeltaR    ) );
00107   values.add( "deltaPhiHadTopLepB"  , jetComb.compareTopB(JetComb::kHad, JetComb::kLep, JetComb::kDeltaPhi  ) );
00108   values.add( "deltaThetaHadTopLepB", jetComb.compareTopB(JetComb::kHad, JetComb::kLep, JetComb::kDeltaTheta) );
00109   // the leptonic top and the hadronic b
00110   values.add( "deltaRLepTopHadB"    , jetComb.compareTopB(JetComb::kLep, JetComb::kHad, JetComb::kDeltaR    ) );
00111   values.add( "deltaPhiLepTopHadB"  , jetComb.compareTopB(JetComb::kLep, JetComb::kHad, JetComb::kDeltaPhi  ) );
00112   values.add( "deltaThetaLepTopHadB", jetComb.compareTopB(JetComb::kLep, JetComb::kHad, JetComb::kDeltaTheta) );
00113   // the hadronic W and the hadronic b
00114   values.add( "deltaRHadWHadB"    , jetComb.compareWB(JetComb::kHad, JetComb::kHad, JetComb::kDeltaR    ) );
00115   values.add( "deltaPhiHadWHadB"  , jetComb.compareWB(JetComb::kHad, JetComb::kHad, JetComb::kDeltaPhi  ) );
00116   values.add( "deltaThetaHadWHadB", jetComb.compareWB(JetComb::kHad, JetComb::kHad, JetComb::kDeltaTheta) );
00117   // the leptonic W and the leptonic b
00118   values.add( "deltaRLepWLepB"    , jetComb.compareWB(JetComb::kLep, JetComb::kLep, JetComb::kDeltaR    ) );
00119   values.add( "deltaPhiLepWLepB"  , jetComb.compareWB(JetComb::kLep, JetComb::kLep, JetComb::kDeltaPhi  ) );
00120   values.add( "deltaThetaLepWLepB", jetComb.compareWB(JetComb::kLep, JetComb::kLep, JetComb::kDeltaTheta) );
00121   // the hadronic W and the leptonic b
00122   values.add( "deltaRHadWLepB"    , jetComb.compareWB(JetComb::kHad, JetComb::kLep, JetComb::kDeltaR    ) );
00123   values.add( "deltaPhiHadWLepB"  , jetComb.compareWB(JetComb::kHad, JetComb::kLep, JetComb::kDeltaPhi  ) );
00124   values.add( "deltaThetaHadWLepB", jetComb.compareWB(JetComb::kHad, JetComb::kLep, JetComb::kDeltaTheta) );
00125   // the leptonic W and the hadronic b
00126   values.add( "deltaRLepWHadB"    , jetComb.compareWB(JetComb::kLep, JetComb::kHad, JetComb::kDeltaR    ) );
00127   values.add( "deltaPhiLepWHadB"  , jetComb.compareWB(JetComb::kLep, JetComb::kHad, JetComb::kDeltaPhi  ) );
00128   values.add( "deltaThetaLepWHadB", jetComb.compareWB(JetComb::kLep, JetComb::kHad, JetComb::kDeltaTheta) );
00129   // the hadronic top and the lepton
00130   values.add( "deltaRHadTopLepton"    , jetComb.compareTopLepton(JetComb::kHad, JetComb::kDeltaR    ) );
00131   values.add( "deltaPhiHadTopLepton"  , jetComb.compareTopLepton(JetComb::kHad, JetComb::kDeltaPhi  ) );
00132   values.add( "deltaThetaHadTopLepton", jetComb.compareTopLepton(JetComb::kHad, JetComb::kDeltaTheta) );
00133   // the leptonic top and the lepton
00134   values.add( "deltaRLepTopLepton"    , jetComb.compareTopLepton(JetComb::kLep, JetComb::kDeltaR    ) );
00135   values.add( "deltaPhiLepTopLepton"  , jetComb.compareTopLepton(JetComb::kLep, JetComb::kDeltaPhi  ) );
00136   values.add( "deltaThetaLepTopLepton", jetComb.compareTopLepton(JetComb::kLep, JetComb::kDeltaTheta) );
00137   // the hadronic top and the neutrino
00138   values.add( "deltaRHadTopNeutrino"    , jetComb.compareTopNeutrino(JetComb::kHad, JetComb::kDeltaR    ) );
00139   values.add( "deltaPhiHadTopNeutrino"  , jetComb.compareTopNeutrino(JetComb::kHad, JetComb::kDeltaPhi  ) );
00140   values.add( "deltaThetaHadTopNeutrino", jetComb.compareTopNeutrino(JetComb::kHad, JetComb::kDeltaTheta) );
00141   // the leptonic top and the neutrino
00142   values.add( "deltaRLepTopNeutrino"    , jetComb.compareTopNeutrino(JetComb::kLep, JetComb::kDeltaR    ) );
00143   values.add( "deltaPhiLepTopNeutrino"  , jetComb.compareTopNeutrino(JetComb::kLep, JetComb::kDeltaPhi  ) );
00144   values.add( "deltaThetaLepTopNeutrino", jetComb.compareTopNeutrino(JetComb::kLep, JetComb::kDeltaTheta) );
00145   // the hadronic W and the lepton
00146   values.add( "deltaRHadWLepton"    , jetComb.compareWLepton(JetComb::kHad, JetComb::kDeltaR    ) );
00147   values.add( "deltaPhiHadWLepton"  , jetComb.compareWLepton(JetComb::kHad, JetComb::kDeltaPhi  ) );
00148   values.add( "deltaThetaHadWLepton", jetComb.compareWLepton(JetComb::kHad, JetComb::kDeltaTheta) );
00149   // the hadronic W and the neutrino
00150   values.add( "deltaRHadWNeutrino"    , jetComb.compareWNeutrino(JetComb::kHad, JetComb::kDeltaR    ) );
00151   values.add( "deltaPhiHadWNeutrino"  , jetComb.compareWNeutrino(JetComb::kHad, JetComb::kDeltaPhi  ) );
00152   values.add( "deltaThetaHadWNeutrino", jetComb.compareWNeutrino(JetComb::kHad, JetComb::kDeltaTheta) );
00153   // the hadronic b and the lepton
00154   values.add( "deltaRHadBLepton"    , jetComb.compareBLepton(JetComb::kHad, JetComb::kDeltaR    ) );
00155   values.add( "deltaPhiHadBLepton"  , jetComb.compareBLepton(JetComb::kHad, JetComb::kDeltaPhi  ) );
00156   values.add( "deltaThetaHadBLepton", jetComb.compareBLepton(JetComb::kHad, JetComb::kDeltaTheta) );
00157   // the leptonic b and the lepton
00158   values.add( "deltaRLepBLepton"    , jetComb.compareBLepton(JetComb::kLep, JetComb::kDeltaR    ) );
00159   values.add( "deltaPhiLepBLepton"  , jetComb.compareBLepton(JetComb::kLep, JetComb::kDeltaPhi  ) );
00160   values.add( "deltaThetaLepBLepton", jetComb.compareBLepton(JetComb::kLep, JetComb::kDeltaTheta) );
00161   // the hadronic b and the neutrino
00162   values.add( "deltaRHadBNeutrino"    , jetComb.compareBNeutrino(JetComb::kHad, JetComb::kDeltaR    ) );
00163   values.add( "deltaPhiHadBNeutrino"  , jetComb.compareBNeutrino(JetComb::kHad, JetComb::kDeltaPhi  ) );
00164   values.add( "deltaThetaHadBNeutrino", jetComb.compareBNeutrino(JetComb::kHad, JetComb::kDeltaTheta) );
00165   // the leptonic b and the neutrino
00166   values.add( "deltaRLepBNeutrino"    , jetComb.compareBNeutrino(JetComb::kLep, JetComb::kDeltaR    ) );
00167   values.add( "deltaPhiLepBNeutrino"  , jetComb.compareBNeutrino(JetComb::kLep, JetComb::kDeltaPhi  ) );
00168   values.add( "deltaThetaLepBNeutrino", jetComb.compareBNeutrino(JetComb::kLep, JetComb::kDeltaTheta) );
00169   // ----------------------------------------------------------------------
00170   // special variables combining the pt of the jets
00171   // ----------------------------------------------------------------------
00172   values.add( "relativePtHadronicTop", jetComb.relativePtHadronicTop() );
00173   values.add( "bOverLightQPt"        , jetComb.bOverLightQPt()         );
00174   // ----------------------------------------------------------------------
00175   // variables based on b-tagging with six different algorithms
00176   // ----------------------------------------------------------------------
00177   // hadronic b quark candidate
00178   values.add( "bTagHadBTrkCntHighEff", jetComb.bTag(JetComb::kHad, JetComb::kTrackCountHighEff) );
00179   values.add( "bTagHadBTrkCntHighPur", jetComb.bTag(JetComb::kHad, JetComb::kTrackCountHighPur) );
00180   values.add( "bTagHadBSoftMuon"     , jetComb.bTag(JetComb::kHad, JetComb::kSoftMuon         ) );
00181   values.add( "bTagHadBSimpSecondVtx", jetComb.bTag(JetComb::kHad, JetComb::kSimpleSecondVtx  ) );
00182   values.add( "bTagHadBCombSecondVtx", jetComb.bTag(JetComb::kHad, JetComb::kCombSecondVtx    ) );
00183   values.add( "bTagHadBImpactParaMVA", jetComb.bTag(JetComb::kHad, JetComb::kCombSecondVtxMVA ) );
00184   // leptonic b quark candidate
00185   values.add( "bTagLepBTrkCntHighEff", jetComb.bTag(JetComb::kLep, JetComb::kTrackCountHighEff) );
00186   values.add( "bTagLepBTrkCntHighPur", jetComb.bTag(JetComb::kLep, JetComb::kTrackCountHighPur) );
00187   values.add( "bTagLepBSoftMuon"     , jetComb.bTag(JetComb::kLep, JetComb::kSoftMuon         ) );
00188   values.add( "bTagLepBSimpSecondVtx", jetComb.bTag(JetComb::kLep, JetComb::kSimpleSecondVtx  ) );
00189   values.add( "bTagLepBCombSecondVtx", jetComb.bTag(JetComb::kLep, JetComb::kCombSecondVtx    ) );
00190   values.add( "bTagLepBImpactParaMVA", jetComb.bTag(JetComb::kLep, JetComb::kCombSecondVtxMVA ) );
00191   // summed b-tags of the two b quark candidates
00192   values.add( "bTagSumTrkCntHighEff", jetComb.combinedBTags(JetComb::kTrackCountHighEff, JetComb::kAdd) );
00193   values.add( "bTagSumTrkCntHighPur", jetComb.combinedBTags(JetComb::kTrackCountHighPur, JetComb::kAdd) );
00194   values.add( "bTagSumSoftMuon"     , jetComb.combinedBTags(JetComb::kSoftMuon,          JetComb::kAdd) );
00195   values.add( "bTagSumSimpSecondVtx", jetComb.combinedBTags(JetComb::kSimpleSecondVtx,   JetComb::kAdd) );
00196   values.add( "bTagSumCombSecondVtx", jetComb.combinedBTags(JetComb::kCombSecondVtx,     JetComb::kAdd) );
00197   values.add( "bTagSumImpactParaMVA", jetComb.combinedBTags(JetComb::kCombSecondVtxMVA,  JetComb::kAdd) );
00198   // multiplied b-tags of the two b quark candidates
00199   values.add( "bTagProdImpactParaMVA", jetComb.combinedBTags(JetComb::kCombSecondVtxMVA, JetComb::kMult) );
00200   // summed b-tags of the two light quark candidates
00201   values.add( "bTagSumHadQHadQBarTrkCntHighEff", jetComb.combinedBTagsForLightQuarks(JetComb::kTrackCountHighEff, JetComb::kAdd) );
00202   values.add( "bTagSumHadQHadQBarTrkCntHighPur", jetComb.combinedBTagsForLightQuarks(JetComb::kTrackCountHighPur, JetComb::kAdd) );
00203   values.add( "bTagSumHadQHadQBarSoftMuon"     , jetComb.combinedBTagsForLightQuarks(JetComb::kSoftMuon,          JetComb::kAdd) );
00204   values.add( "bTagSumHadQHadQBarSimpSecondVtx", jetComb.combinedBTagsForLightQuarks(JetComb::kSimpleSecondVtx,   JetComb::kAdd) );
00205   values.add( "bTagSumHadQHadQBarCombSecondVtx", jetComb.combinedBTagsForLightQuarks(JetComb::kCombSecondVtx,     JetComb::kAdd) );
00206   values.add( "bTagSumHadQHadQBarImpactParaMVA", jetComb.combinedBTagsForLightQuarks(JetComb::kCombSecondVtxMVA,  JetComb::kAdd) );
00207   // multiplied b-tags of the two light quark candidates
00208   values.add( "bTagProdHadQHadQBarImpactParaMVA", jetComb.combinedBTagsForLightQuarks(JetComb::kCombSecondVtxMVA, JetComb::kMult) );
00209 }
00210 
00211 #endif