SusyNtuple
SusyNtuple/WhTruthExtractor.h
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
 All Classes Functions Variables Typedefs Enumerations Enumerator