00001 #ifndef JetReco_JetExtendedAssociation_h 00002 #define JetReco_JetExtendedAssociation_h 00003 00013 #include "DataFormats/Common/interface/AssociationVector.h" 00014 #include "DataFormats/JetReco/interface/JetCollection.h" 00015 #include "DataFormats/Common/interface/Ref.h" 00016 #include "DataFormats/Common/interface/RefToBase.h" 00017 #include "DataFormats/Common/interface/RefVector.h" 00018 #include "DataFormats/Math/interface/LorentzVector.h" 00019 00020 namespace fwlite { 00021 class Event; 00022 } 00023 00024 namespace reco { 00025 namespace JetExtendedAssociation { 00026 class JetExtendedData; 00027 typedef math::PtEtaPhiELorentzVectorF LorentzVector; 00028 typedef reco::JetExtendedAssociation::JetExtendedData Value; 00029 typedef std::vector<Value> Values; 00030 typedef edm::AssociationVector<reco::JetRefBaseProd, Values> Container; 00031 typedef Container::value_type value_type; 00032 typedef Container::transient_vector_type transient_vector_type; 00033 typedef edm::Ref <Container> Ref; 00034 typedef edm::RefProd <Container> RefProd; 00035 typedef edm::RefVector <Container> RefVector; 00036 00037 00039 int tracksAtVertexNumber (const Container&, const reco::JetBaseRef&); 00041 int tracksAtVertexNumber (const Container&, const reco::Jet&); 00043 const LorentzVector& tracksAtVertexP4 (const Container&, const reco::JetBaseRef&); 00044 const LorentzVector& tracksAtVertexP4 (const Container&, const reco::Jet&); 00046 int tracksAtCaloNumber (const Container&, const reco::JetBaseRef&); 00048 int tracksAtCaloNumber (const Container&, const reco::Jet&); 00050 const LorentzVector& tracksAtCaloP4 (const Container&, const reco::JetBaseRef&); 00052 const LorentzVector& tracksAtCaloP4 (const Container&, const reco::Jet&); 00053 00055 bool setValue (Container&, const reco::JetBaseRef&, const JetExtendedData&); 00057 bool setValue (Container*, const reco::JetBaseRef&, const JetExtendedData&); 00059 const JetExtendedData& getValue (const Container&, const reco::JetBaseRef&); 00061 const JetExtendedData& getValue (const Container&, const reco::Jet&); 00063 std::vector<reco::JetBaseRef > allJets (const Container&); 00065 bool hasJet (const Container&, const reco::JetBaseRef&); 00067 bool hasJet (const Container&, const reco::Jet&); 00068 00069 class JetExtendedData { 00070 public: 00071 JetExtendedData (); 00072 ~JetExtendedData () {} 00073 int mTracksAtVertexNumber; 00074 LorentzVector mTracksAtVertexP4; 00075 int mTracksAtCaloNumber; 00076 LorentzVector mTracksAtCaloP4; 00077 }; 00078 } 00079 } 00080 00081 #endif