Go to the documentation of this file.00001 #ifndef JetReco_Jet_h
00002 #define JetReco_Jet_h
00003
00017 #include <string>
00018 #include "DataFormats/Candidate/interface/CompositePtrCandidate.h"
00019
00020 namespace reco {
00021 class Jet : public CompositePtrCandidate {
00022 public:
00023 typedef edm::Ptr<Candidate> Constituent;
00024 typedef std::vector<Constituent> Constituents;
00025
00027 class EtaPhiMoments {
00028 public:
00029 float etaMean;
00030 float phiMean;
00031 float etaEtaMoment;
00032 float phiPhiMoment;
00033 float etaPhiMoment;
00034 };
00035
00037 Jet () : mJetArea (0), mPileupEnergy (0), mPassNumber (0) {}
00039 Jet (const LorentzVector& fP4, const Point& fVertex);
00040 Jet (const LorentzVector& fP4, const Point& fVertex, const Constituents& fConstituents);
00042 virtual ~Jet () {}
00043
00045 EtaPhiMoments etaPhiStatistics () const;
00046
00048 float etaetaMoment () const;
00049
00051 float phiphiMoment () const;
00052
00054 float etaphiMoment () const;
00055
00057 float etInAnnulus (float fRmin, float fRmax) const;
00058
00060 int nCarrying (float fFraction) const;
00061
00063 float maxDistance () const;
00064
00066 virtual int nConstituents () const {return numberOfDaughters();}
00067
00069 static float physicsEta (float fZVertex, float fDetectorEta);
00070
00072 static float detectorEta (float fZVertex, float fPhysicsEta);
00073
00074 static Candidate::LorentzVector physicsP4 (const Candidate::Point &newVertex, const Candidate &inParticle,const Candidate::Point &oldVertex=Candidate::Point(0,0,0));
00075
00076 static Candidate::LorentzVector detectorP4 (const Candidate::Point &vertex, const Candidate &inParticle);
00077
00079 virtual Constituents getJetConstituents () const;
00080
00082 virtual std::vector<const reco::Candidate*> getJetConstituentsQuick () const;
00083
00085 virtual std::string print () const;
00086
00088 virtual void scaleEnergy (double fScale);
00089
00091 virtual void setJetArea (float fArea) {mJetArea = fArea;}
00093 virtual float jetArea () const {return mJetArea;}
00094
00096 virtual void setPileup (float fEnergy) {mPileupEnergy = fEnergy;}
00098 virtual float pileup () const {return mPileupEnergy;}
00099
00101 virtual void setNPasses (int fPasses) {mPassNumber = fPasses;}
00103 virtual int nPasses () const {return mPassNumber;}
00104
00105 bool isJet() const;
00106
00107 private:
00108 float mJetArea;
00109 float mPileupEnergy;
00110 int mPassNumber;
00111 };
00112 }
00113 #endif