CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/DataFormats/JetReco/interface/PFJet.h

Go to the documentation of this file.
00001 #ifndef JetReco_PFJet_h
00002 #define JetReco_PFJet_h
00003 
00017 #include "DataFormats/JetReco/interface/Jet.h"
00018 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
00019 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00020 
00021 namespace reco {
00022 class PFJet : public Jet {
00023  public:
00024 
00025     typedef reco::PFCandidatePtr ConstituentTypePtr;
00026     typedef reco::PFCandidateFwdPtr ConstituentTypeFwdPtr;
00027 
00028   struct Specific {
00029     Specific () :
00030        mChargedHadronEnergy (0),
00031        mNeutralHadronEnergy (0),
00032        mPhotonEnergy (0),
00033        mElectronEnergy (0),
00034        mMuonEnergy (0),
00035        mHFHadronEnergy (0),
00036        mHFEMEnergy (0),
00037 
00038        mChargedHadronMultiplicity (0),
00039        mNeutralHadronMultiplicity (0),
00040        mPhotonMultiplicity (0),
00041        mElectronMultiplicity (0),
00042        mMuonMultiplicity (0),
00043        mHFHadronMultiplicity (0),
00044        mHFEMMultiplicity (0),
00045 
00046        mChargedEmEnergy (0),
00047        mChargedMuEnergy (0),
00048        mNeutralEmEnergy (0),
00049        
00050        mChargedMultiplicity (0),
00051        mNeutralMultiplicity (0)
00052     {}
00053     float mChargedHadronEnergy;
00054     float mNeutralHadronEnergy;
00055     float mPhotonEnergy;
00056     float mElectronEnergy;
00057     float mMuonEnergy;
00058     float mHFHadronEnergy;
00059     float mHFEMEnergy;
00060 
00061     int mChargedHadronMultiplicity;
00062     int mNeutralHadronMultiplicity;
00063     int mPhotonMultiplicity;
00064     int mElectronMultiplicity;
00065     int mMuonMultiplicity;
00066     int mHFHadronMultiplicity;
00067     int mHFEMMultiplicity;
00068 
00069     //old (deprecated) data members
00070     //kept only for backwards compatibility:
00071     float mChargedEmEnergy;
00072     float mChargedMuEnergy;
00073     float mNeutralEmEnergy;
00074     int mChargedMultiplicity;
00075     int mNeutralMultiplicity;
00076  };
00077   
00079   PFJet() {}
00080   
00082   PFJet(const LorentzVector& fP4, const Point& fVertex, const Specific& fSpecific, 
00083           const Jet::Constituents& fConstituents);
00084 
00085   PFJet(const LorentzVector& fP4, const Point& fVertex, const Specific& fSpecific); 
00086 
00088   PFJet(const LorentzVector& fP4, const Specific& fSpecific, 
00089           const Jet::Constituents& fConstituents);
00090 
00091   
00092   virtual ~PFJet() {};
00093 
00095   float chargedHadronEnergy () const {return m_specific.mChargedHadronEnergy;}
00097   float  chargedHadronEnergyFraction () const {return chargedHadronEnergy () / energy ();}
00099   float neutralHadronEnergy () const {return m_specific.mNeutralHadronEnergy;}
00101   float neutralHadronEnergyFraction () const {return neutralHadronEnergy () / energy ();}
00103   float photonEnergy () const {return m_specific.mPhotonEnergy;}
00105   float photonEnergyFraction () const {return photonEnergy () / energy ();}
00107   float electronEnergy () const {return m_specific.mElectronEnergy;}
00109   float electronEnergyFraction () const {return electronEnergy () / energy ();}
00111   float muonEnergy () const {return m_specific.mMuonEnergy;}
00113   float muonEnergyFraction () const {return muonEnergy () / energy ();}
00115   float HFHadronEnergy () const {return m_specific.mHFHadronEnergy;}
00117   float HFHadronEnergyFraction () const {return HFHadronEnergy () / energy ();}
00119   float HFEMEnergy () const {return m_specific.mHFEMEnergy;}
00121   float HFEMEnergyFraction () const {return HFEMEnergy () / energy ();}
00122 
00124   int chargedHadronMultiplicity () const {return m_specific.mChargedHadronMultiplicity;}
00126   int neutralHadronMultiplicity () const {return m_specific.mNeutralHadronMultiplicity;}
00128   int photonMultiplicity () const {return m_specific.mPhotonMultiplicity;}
00130   int electronMultiplicity () const {return m_specific.mElectronMultiplicity;}
00132   int muonMultiplicity () const {return m_specific.mMuonMultiplicity;}
00134   int HFHadronMultiplicity () const {return m_specific.mHFHadronMultiplicity;}
00136   int HFEMMultiplicity () const {return m_specific.mHFEMMultiplicity;}
00137 
00139   float chargedEmEnergy () const {return m_specific.mChargedEmEnergy;}
00141   float chargedEmEnergyFraction () const {return chargedEmEnergy () / energy ();}
00143   float chargedMuEnergy () const {return m_specific.mChargedMuEnergy;}
00145   float chargedMuEnergyFraction () const {return chargedMuEnergy () / energy ();}
00147   float neutralEmEnergy () const {return m_specific.mNeutralEmEnergy;}
00149   float neutralEmEnergyFraction () const {return neutralEmEnergy () / energy ();}
00150   
00152   int chargedMultiplicity () const {return m_specific.mChargedMultiplicity;}
00154   int neutralMultiplicity () const {return m_specific.mNeutralMultiplicity;}
00155 
00156 
00158   virtual reco::PFCandidatePtr getPFConstituent (unsigned fIndex) const;
00159 
00161   virtual std::vector <reco::PFCandidatePtr> getPFConstituents () const;
00162 
00166   reco::TrackRefVector getTrackRefs() const; 
00167   
00168   // block accessors
00169   
00170   const Specific& getSpecific () const {return m_specific;}
00171 
00173   virtual PFJet* clone () const;
00174 
00176   virtual std::string print () const;
00177 
00178 
00179  private:
00181   virtual bool overlap( const Candidate & ) const;
00182   
00183   //Variables specific to to the PFJet class
00184   Specific m_specific;
00185 };
00186 
00187 // streamer
00188  std::ostream& operator<<(std::ostream& out, const reco::PFJet& jet);
00189 }
00190 // temporary fix before include_checcker runs globally
00191 #include "DataFormats/JetReco/interface/PFJetCollection.h" //INCLUDECHECKER:SKIP 
00192 #endif