![]() |
![]() |
00001 #ifndef MCPARTON_H 00002 #define MCPARTON_H 00003 00004 // class for partons in the simulation allowing 00005 // to get the most important info for partons 00006 00007 #include "RecoBTag/MCTools/interface/MCBaseParticle.h" 00008 00009 class MCParton : public MCBaseParticle { 00010 00011 public: 00012 00013 MCParton(); 00014 00015 MCParton(const HepMC::GenParticle* particle, const HepMC::GenEvent* event, 00016 const HepMC::GenParticle* lastParton); 00017 00018 ~MCParton(){} 00019 00020 00021 // other info (isPrimary etc.) where the complete vector of generated particles is needed 00022 void setParticleProperties (); 00023 00024 // print 00025 void print () const; 00026 00027 // access to data members 00028 int flavour () const { return flavour_; } 00029 int flavourAbs () const { return flavourAbs_; } 00030 int statusPythia () const { return statusPythia_; } 00031 const HepMC::GenParticle* mother () const { return mother_; } 00032 int motherLundCode () const { return motherLundCode_; } 00033 int motherStatusPythia () const { return motherStatusPythia_; } 00034 bool fromPrimaryProcess () const { return fromPrimaryProcess_; } 00035 bool fromRadiation () const { return fromRadiation_; } 00036 bool fromGluonSplitting () const { return fromGluonSplitting_; } 00037 bool isFinalParton () const { return isFinalParton_; } 00038 // bool RadiatesGluon () const { return radiatesGluon_; } 00039 bool splitsToD () const { return splitsToD_; } 00040 bool splitsToU () const { return splitsToU_; } 00041 bool splitsToS () const { return splitsToS_; } 00042 bool splitsToC () const { return splitsToC_; } 00043 bool splitsToB () const { return splitsToB_; } 00044 // bool getSplitsToGluon () const { return splitsToGluon ; } 00045 00046 const std::vector<const HepMC::GenParticle*> & daughters () const { return daughterLines_ ; } 00047 const math::XYZTLorentzVector & summedDaughterMomentum () const { return summedDaughters_ ; } 00048 00049 bool isInitialParton () const { return isInitialParton_; } 00050 bool initialPartonHasCloseHF () const { return initialPartonHasCloseHF_; } 00051 00052 private: 00053 00054 void reset (); 00055 int flavour_; // 0: undef._; 12345: duscb_; 21: gluon // D 00056 int flavourAbs_; // D 00057 int statusPythia_; // D 00058 int motherLundCode_; // D 00059 int motherStatusPythia_; 00060 bool fromPrimaryProcess_; // D 00061 bool fromRadiation_; // NOT YET 00062 bool fromGluonSplitting_; // D 00063 bool isFinalParton_; // D 00064 // bool radiatesGluon_; 00065 bool splitsToD_; // D 00066 bool splitsToU_; // D 00067 bool splitsToS_; // D 00068 bool splitsToC_; // D 00069 bool splitsToB_; // D 00070 // bool splitsToGluon_; // D 00071 00072 const HepMC::GenParticle* lastParton_; 00073 const HepMC::GenParticle* mother_; 00074 00075 std::vector<const HepMC::GenParticle*> daughterLines_; 00076 math::XYZTLorentzVector summedDaughters_; 00077 00078 bool isInitialParton_; 00079 bool initialPartonHasCloseHF_; 00080 00081 }; 00082 00083 #endif