CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/src/DataFormats/JetReco/interface/JetExtendedAssociation.h

Go to the documentation of this file.
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