File indexing completed on 2023-03-17 10:50:21
0001 #ifndef DataFormats_L1TCalorimeterPhase2_CaloCrystalsCluster_h
0002 #define DataFormats_L1TCalorimeterPhase2_CaloCrystalsCluster_h
0003
0004 #include <vector>
0005 #include <map>
0006 #include <string>
0007 #include <algorithm>
0008 #include "DataFormats/L1Trigger/interface/L1Candidate.h"
0009 #include "DataFormats/DetId/interface/DetId.h"
0010
0011 namespace l1tp2 {
0012
0013 class CaloCrystalCluster : public l1t::L1Candidate {
0014 public:
0015 CaloCrystalCluster()
0016 : l1t::L1Candidate(),
0017 calibratedPt_(0.),
0018 hovere_(0.),
0019 iso_(0.),
0020 puCorrPt_(0.),
0021 bremStrength_(0.),
0022 e2x2_(0.),
0023 e2x5_(0.),
0024 e3x5_(0.),
0025 e5x5_(0.),
0026 standaloneWP_(0.),
0027 electronWP98_(0.),
0028 photonWP80_(0.),
0029 electronWP90_(0.),
0030 looseL1TkMatchWP_(0.),
0031 stage2effMatch_(0.){};
0032
0033 CaloCrystalCluster(const PolarLorentzVector &p4,
0034 float calibratedPt,
0035 float hovere,
0036 float iso,
0037 DetId seedCrystal,
0038 float puCorrPt = 0.,
0039 float bremStrength = 0.,
0040 float e2x2 = 0.,
0041 float e2x5 = 0.,
0042 float e3x5 = 0.,
0043 float e5x5 = 0.,
0044 bool standaloneWP = false,
0045 bool electronWP98 = false,
0046 bool photonWP80 = false,
0047 bool electronWP90 = false,
0048 bool looseL1TkMatchWP = false,
0049 bool stage2effMatch = false)
0050 : l1t::L1Candidate(p4),
0051 calibratedPt_(calibratedPt),
0052 hovere_(hovere),
0053 iso_(iso),
0054 seedCrystal_(seedCrystal),
0055 puCorrPt_(puCorrPt),
0056 bremStrength_(bremStrength),
0057 e2x2_(e2x2),
0058 e2x5_(e2x5),
0059 e3x5_(e3x5),
0060 e5x5_(e5x5),
0061 standaloneWP_(standaloneWP),
0062 electronWP98_(electronWP98),
0063 photonWP80_(photonWP80),
0064 electronWP90_(electronWP90),
0065 looseL1TkMatchWP_(looseL1TkMatchWP),
0066 stage2effMatch_(stage2effMatch){};
0067
0068 ~CaloCrystalCluster() override{};
0069 inline float calibratedPt() const { return calibratedPt_; };
0070 inline float hovere() const { return hovere_; };
0071 inline float isolation() const { return iso_; };
0072 inline float puCorrPt() const { return puCorrPt_; };
0073 inline float bremStrength() const { return bremStrength_; };
0074 inline DetId seedCrystal() const { return seedCrystal_; };
0075 void setCrystalPtInfo(std::vector<float> info) {
0076 std::sort(info.begin(), info.end());
0077 std::reverse(info.begin(), info.end());
0078 crystalPt_ = std::move(info);
0079 };
0080 void setExperimentalParams(const std::map<std::string, float> ¶ms) { experimentalParams_ = params; };
0081 const std::map<std::string, float> &getExperimentalParams() const { return experimentalParams_; };
0082 inline float experimentalParam(const std::string &name) const {
0083 auto iter = experimentalParams_.find(name);
0084 if (iter != experimentalParams_.end()) {
0085 return iter->second;
0086 } else {
0087 warningNoMapping(name);
0088 return -99.;
0089 }
0090 };
0091
0092 inline float e2x2() const { return e2x2_; };
0093 inline float e2x5() const { return e2x5_; };
0094 inline float e3x5() const { return e3x5_; };
0095 inline float e5x5() const { return e5x5_; };
0096 inline float standaloneWP() const { return standaloneWP_; };
0097 inline float electronWP98() const { return electronWP98_; };
0098 inline float photonWP80() const { return photonWP80_; };
0099 inline float electronWP90() const { return electronWP90_; };
0100 inline float looseL1TkMatchWP() const { return looseL1TkMatchWP_; };
0101 inline float stage2effMatch() const { return stage2effMatch_; };
0102
0103
0104
0105 inline float crystalPt(unsigned int index) const { return (index < crystalPt_.size()) ? crystalPt_[index] : 0.; };
0106
0107 private:
0108 static void warningNoMapping(const std::string &name);
0109
0110
0111
0112 float calibratedPt_;
0113
0114 float hovere_;
0115
0116 float iso_;
0117
0118 DetId seedCrystal_;
0119
0120 float puCorrPt_;
0121
0122 float bremStrength_;
0123
0124 float e2x2_;
0125
0126 float e2x5_;
0127
0128 float e3x5_;
0129
0130 float e5x5_;
0131
0132 bool standaloneWP_;
0133
0134 bool electronWP98_;
0135
0136 bool photonWP80_;
0137
0138 bool electronWP90_;
0139
0140 bool looseL1TkMatchWP_;
0141
0142 bool stage2effMatch_;
0143
0144 std::vector<float> crystalPt_;
0145
0146 std::map<std::string, float> experimentalParams_;
0147 };
0148
0149
0150 typedef std::vector<l1tp2::CaloCrystalCluster> CaloCrystalClusterCollection;
0151 }
0152 #endif