File indexing completed on 2024-04-06 12:02:19
0001 #ifndef L1Geometry_L1CaloGeometry_h
0002 #define L1Geometry_L1CaloGeometry_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #include "CondFormats/Serialization/interface/Serializable.h"
0024
0025 #include <vector>
0026 #include <ostream>
0027
0028
0029 #include "DataFormats/L1CaloTrigger/interface/L1CaloRegionDetId.h"
0030
0031
0032
0033 class L1CaloGeometry {
0034 public:
0035
0036
0037
0038
0039
0040
0041
0042
0043 enum Versions { kOrig, kAddedMHTPhi, kNumVersions };
0044
0045 L1CaloGeometry();
0046 L1CaloGeometry(unsigned int numberGctEmJetPhiBins,
0047 double gctEmJetPhiBinOffset,
0048 unsigned int numberGctEtSumPhiBins,
0049 double gctEtSumPhiBinOffset,
0050 unsigned int numberGctHtSumPhiBins,
0051 double gctHtSumPhiBinOffset,
0052 unsigned int numberGctCentralEtaBinsPerHalf,
0053 unsigned int numberGctForwardEtaBinsPerHalf,
0054 unsigned int etaSignBitOffset,
0055 const std::vector<double>& gctEtaBinBoundaries);
0056 virtual ~L1CaloGeometry();
0057
0058
0059
0060 unsigned int version() const { return m_version; }
0061
0062
0063
0064 double etaBinCenter(unsigned int etaIndex, bool central = true) const;
0065 double etaBinLowEdge(unsigned int etaIndex, bool central = true) const;
0066 double etaBinHighEdge(unsigned int etaIndex, bool central = true) const;
0067
0068
0069 double globalEtaBinCenter(unsigned int globalEtaIndex) const;
0070 double globalEtaBinLowEdge(unsigned int globalEtaIndex) const;
0071 double globalEtaBinHighEdge(unsigned int globalEtaIndex) const;
0072
0073
0074 double etaBinCenter(const L1CaloRegionDetId& detId) const { return globalEtaBinCenter(detId.ieta()); }
0075 double etaBinLowEdge(const L1CaloRegionDetId& detId) const { return globalEtaBinLowEdge(detId.ieta()); }
0076 double etaBinHighEdge(const L1CaloRegionDetId& detId) const { return globalEtaBinHighEdge(detId.ieta()); }
0077
0078 double emJetPhiBinCenter(unsigned int phiIndex) const;
0079 double emJetPhiBinLowEdge(unsigned int phiIndex) const;
0080 double emJetPhiBinHighEdge(unsigned int phiIndex) const;
0081
0082 double emJetPhiBinCenter(const L1CaloRegionDetId& detId) const { return emJetPhiBinCenter(detId.iphi()); }
0083 double emJetPhiBinLowEdge(const L1CaloRegionDetId& detId) const { return emJetPhiBinLowEdge(detId.iphi()); }
0084 double emJetPhiBinHighEdge(const L1CaloRegionDetId& detId) const { return emJetPhiBinHighEdge(detId.iphi()); }
0085
0086 double etSumPhiBinCenter(unsigned int phiIndex) const;
0087 double etSumPhiBinLowEdge(unsigned int phiIndex) const;
0088 double etSumPhiBinHighEdge(unsigned int phiIndex) const;
0089
0090 double htSumPhiBinCenter(unsigned int phiIndex) const;
0091 double htSumPhiBinLowEdge(unsigned int phiIndex) const;
0092 double htSumPhiBinHighEdge(unsigned int phiIndex) const;
0093
0094 unsigned int etaIndex(const double& etaValue) const;
0095 unsigned int globalEtaIndex(const double& etaValue) const;
0096 unsigned int emJetPhiIndex(const double& phiValue) const;
0097 unsigned int etSumPhiIndex(const double& phiValue) const;
0098 unsigned int htSumPhiIndex(const double& phiValue) const;
0099
0100 unsigned int numberGctEmJetPhiBins() const { return m_numberGctEmJetPhiBins; }
0101 unsigned int numberGctEtSumPhiBins() const { return m_numberGctEtSumPhiBins; }
0102 unsigned int numberGctHtSumPhiBins() const;
0103 unsigned int numberGctCentralEtaBinsPerHalf() const { return m_numberGctCentralEtaBinsPerHalf; }
0104 unsigned int numberGctForwardEtaBinsPerHalf() const { return m_numberGctForwardEtaBinsPerHalf; }
0105 unsigned int etaSignBitOffset() const { return m_etaBinsPerHalf; }
0106
0107
0108
0109
0110
0111 private:
0112
0113
0114
0115
0116
0117
0118 unsigned int m_version;
0119
0120 unsigned int m_numberGctEmJetPhiBins;
0121 unsigned int m_numberGctEtSumPhiBins;
0122 unsigned int m_numberGctHtSumPhiBins;
0123 unsigned int m_numberGctCentralEtaBinsPerHalf;
0124 unsigned int m_numberGctForwardEtaBinsPerHalf;
0125 unsigned int m_etaSignBitOffset;
0126 std::vector<double> m_gctEtaBinBoundaries;
0127
0128 unsigned int m_etaBinsPerHalf;
0129
0130
0131 double m_gctEmJetPhiBinWidth;
0132 double m_gctEtSumPhiBinWidth;
0133 double m_gctHtSumPhiBinWidth;
0134 double m_gctEmJetPhiOffset;
0135 double m_gctEtSumPhiOffset;
0136 double m_gctHtSumPhiOffset;
0137
0138 COND_SERIALIZABLE;
0139 };
0140
0141 std::ostream& operator<<(std::ostream& os, const L1CaloGeometry& obj);
0142
0143 #endif