File indexing completed on 2024-09-07 04:35:53
0001 #ifndef JetReco_CaloJet_h
0002 #define JetReco_CaloJet_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #include "DataFormats/JetReco/interface/Jet.h"
0024 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
0025
0026 namespace reco {
0027 class CaloJet : public Jet {
0028 public:
0029 typedef CaloTowerPtr ConstituentTypePtr;
0030 typedef CaloTowerFwdPtr ConstituentTypeFwdPtr;
0031
0032 struct Specific {
0033 Specific()
0034 : mMaxEInEmTowers(0),
0035 mMaxEInHadTowers(0),
0036 mHadEnergyInHO(0),
0037 mHadEnergyInHB(0),
0038 mHadEnergyInHF(0),
0039 mHadEnergyInHE(0),
0040 mEmEnergyInEB(0),
0041 mEmEnergyInEE(0),
0042 mEmEnergyInHF(0),
0043 mEnergyFractionHadronic(0),
0044 mEnergyFractionEm(0),
0045 mTowersArea(0) {}
0046
0047
0048 float mMaxEInEmTowers;
0049
0050 float mMaxEInHadTowers;
0051
0052 float mHadEnergyInHO;
0053
0054 float mHadEnergyInHB;
0055
0056 float mHadEnergyInHF;
0057
0058 float mHadEnergyInHE;
0059
0060 float mEmEnergyInEB;
0061
0062 float mEmEnergyInEE;
0063
0064 float mEmEnergyInHF;
0065
0066 float mEnergyFractionHadronic;
0067
0068 float mEnergyFractionEm;
0069
0070 float mTowersArea;
0071 };
0072
0073
0074 CaloJet() {}
0075
0076
0077 CaloJet(const LorentzVector& fP4,
0078 const Point& fVertex,
0079 const Specific& fSpecific,
0080 const Jet::Constituents& fConstituents);
0081
0082
0083 CaloJet(const LorentzVector& fP4, const Point& fVertex, const Specific& fSpecific);
0084
0085
0086 CaloJet(const LorentzVector& fP4, const Specific& fSpecific, const Jet::Constituents& fConstituents);
0087
0088 ~CaloJet() override {}
0089
0090
0091 float maxEInEmTowers() const { return m_specific.mMaxEInEmTowers; }
0092
0093 float maxEInHadTowers() const { return m_specific.mMaxEInHadTowers; }
0094
0095 float energyFractionHadronic() const { return m_specific.mEnergyFractionHadronic; }
0096
0097 float emEnergyFraction() const { return m_specific.mEnergyFractionEm; }
0098
0099 float hadEnergyInHB() const { return m_specific.mHadEnergyInHB; }
0100
0101 float hadEnergyInHO() const { return m_specific.mHadEnergyInHO; }
0102
0103 float hadEnergyInHE() const { return m_specific.mHadEnergyInHE; }
0104
0105 float hadEnergyInHF() const { return m_specific.mHadEnergyInHF; }
0106
0107 float emEnergyInEB() const { return m_specific.mEmEnergyInEB; }
0108
0109 float emEnergyInEE() const { return m_specific.mEmEnergyInEE; }
0110
0111 float emEnergyInHF() const { return m_specific.mEmEnergyInHF; }
0112
0113 float towersArea() const { return m_specific.mTowersArea; }
0114
0115 int n90() const { return nCarrying(0.9); }
0116
0117 int n60() const { return nCarrying(0.6); }
0118
0119
0120
0121
0122
0123
0124
0125
0126 LorentzVector physicsP4(const Particle::Point& vertex) const;
0127
0128 LorentzVector detectorP4() const;
0129
0130
0131
0132
0133
0134
0135
0136
0137 virtual CaloTowerPtr getCaloConstituent(unsigned fIndex) const;
0138
0139 virtual std::vector<CaloTowerPtr> getCaloConstituents() const;
0140
0141
0142
0143 const Specific& getSpecific() const { return m_specific; }
0144
0145
0146 CaloJet* clone() const override;
0147
0148
0149 std::string print() const override;
0150
0151
0152 std::vector<CaloTowerDetId> getTowerIndices() const;
0153
0154 private:
0155
0156 bool overlap(const Candidate&) const override;
0157
0158
0159 Specific m_specific;
0160 };
0161 }
0162
0163 #include "DataFormats/JetReco/interface/CaloJetCollection.h" //INCLUDECHECKER:SKIP
0164 #endif