SusyNtuple
|
00001 #ifndef WHTRUTHEXTRACTOR_H 00002 #define WHTRUTHEXTRACTOR_H 00003 00004 #include "SusyNtuple/mc_truth_utils.h" 00005 00006 #include <vector> 00007 #include <string> 00008 00010 00023 class WhTruthExtractor { 00024 public: 00025 typedef std::vector< int > vint_t; 00026 typedef std::vector< vint_t > vvint_t; 00027 public: 00028 WhTruthExtractor(); 00029 Susy::mc::Hdecays update(const vint_t* pdg, const vvint_t *childIndex, const vvint_t *parentIndex); 00030 Susy::mc::Hdecays decay() const {return decay_;} 00031 void printStatus() const; 00033 00037 static vint_t ttbarMcAtNloParticles(const vint_t *pdgs, 00038 const vvint_t *childrenIndices); 00040 00043 vint_t higgsEventParticleIndices(const vint_t* pdg, const vvint_t *childIndex, const vvint_t *parentIndex); 00044 public: 00045 bool verbose_; 00046 const vint_t pdgsPbAb_; 00047 const vint_t pdgsPwAw_; 00048 const vint_t pdgsPmuAmu_; 00049 const vint_t pdgsPtauAtau_; 00050 static void printEvent(const vint_t &pdg, const vint_t &status, 00051 const vvint_t &childIndex, const vvint_t &parentIndex); 00052 private: 00053 Susy::mc::vint_t findHiggsIndices(const vint_t &pdg); 00054 void buildHiggsChildrenPgds(const vint_t &pdgs, const vvint_t &childIndices); 00055 void buildHiggsParentsPgds(const vint_t &pdgs, const vvint_t &parentIndices); 00056 bool isBoringHiggs(size_t iHiggs) const; 00057 int firstInterestingHiggs() const; 00058 Susy::mc::Hdecays decayType(size_t iHiggs) const; 00059 00060 vint_t hIndices_; 00061 vvint_t hParPdgs_; 00062 vvint_t hChiPdgs_; 00063 int interestingHiggs_; 00064 Susy::mc::Hdecays decay_; 00065 }; // end WhTruthExtractor 00066 #endif