Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:04:23

0001 #ifndef DataFormats_JetMatching_JetFlavour_H
0002 #define DataFormats_JetMatching_JetFlavour_H
0003 
0004 #include <vector>
0005 #include "DataFormats/Math/interface/Point3D.h"
0006 #include "DataFormats/Math/interface/LorentzVector.h"
0007 
0008 namespace reco {
0009   /**
0010  * JetFlavour class is meant to be used when the genEvent is dropped.
0011  * It can store by value the matching information about flavour and parton kinematics
0012  * The flavour definition and the corresponding parton information should be configured
0013  * in the producer.
0014  * The typedefs are taken from reco::Particle
0015  * */
0016   class JetFlavour {
0017   public:
0018     /// Lorentz vector
0019     typedef math::XYZTLorentzVector LorentzVector;
0020     /// point in the space
0021     typedef math::XYZPoint Point;
0022     /// lepton info struct
0023     struct Leptons {
0024       int electron;
0025       int muon;
0026       int tau;
0027 
0028       Leptons() : electron(0), muon(0), tau(0) {}
0029     };
0030 
0031     JetFlavour(void) {}
0032     JetFlavour(const LorentzVector& lv, const Point& pt, int fl, const Leptons& le)
0033         : m_partonMomentum(lv), m_partonVertex(pt), m_flavour(fl), m_leptons(le) {}
0034     JetFlavour(const LorentzVector& lv, const Point& pt, int fl)
0035         : m_partonMomentum(lv), m_partonVertex(pt), m_flavour(fl) {}
0036 
0037     const LorentzVector getLorentzVector() const { return m_partonMomentum; }
0038     const Point getPartonVertex() const { return m_partonVertex; }
0039     const int getFlavour() const { return m_flavour; }
0040     const Leptons getLeptons() const { return m_leptons; }
0041 
0042   private:
0043     LorentzVector m_partonMomentum;
0044     Point m_partonVertex;  // is it needed?
0045     int m_flavour;
0046     Leptons m_leptons;
0047   };
0048 
0049 }  // namespace reco
0050 #endif