File indexing completed on 2024-04-06 12:20:25
0001
0002
0003
0004
0005
0006
0007
0008 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0009 #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetSumAlgorithmFirmware.h"
0010 #include "L1Trigger/L1TCalorimeter/interface/CaloTools.h"
0011
0012 l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::Stage2Layer2JetSumAlgorithmFirmwareImp1(CaloParamsHelper const* params) {
0013 httJetThresholdHw_ = floor(params->etSumEtThreshold(1) / params->jetLsb());
0014 mhtJetThresholdHw_ = floor(params->etSumEtThreshold(3) / params->jetLsb());
0015
0016 httEtaMax_ = params->etSumEtaMax(1);
0017 httEtaMaxHF_ = CaloTools::kHFEnd;
0018 mhtEtaMax_ = params->etSumEtaMax(3);
0019 mhtEtaMaxHF_ = CaloTools::kHFEnd;
0020 }
0021
0022 void l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::processEvent(const std::vector<l1t::Jet>& alljets,
0023 std::vector<l1t::EtSum>& htsums) {
0024
0025 for (int etaSide = 1; etaSide >= -1; etaSide -= 2) {
0026 int hx(0), hy(0), ht(0);
0027 int hxHF(0), hyHF(0), htHF(0);
0028
0029 bool satMht(false), satMhtHF(false), satHt(false), satHtHF(false);
0030
0031
0032 for (unsigned absieta = 1; absieta <= (unsigned int)CaloTools::mpEta(CaloTools::kHFEnd); absieta++) {
0033 int ieta = etaSide * absieta;
0034
0035 int ringHx(0), ringHy(0), ringHt(0);
0036 int ringHxHF(0), ringHyHF(0), ringHtHF(0);
0037
0038
0039 for (int iphi = 1; iphi <= CaloTools::kHBHENrPhi; iphi++) {
0040
0041 l1t::Jet thisJet;
0042 bool foundJet = false;
0043 for (unsigned jetIt = 0; jetIt < alljets.size(); jetIt++) {
0044 if (CaloTools::mpEta(alljets.at(jetIt).hwEta()) == ieta && alljets.at(jetIt).hwPhi() == iphi) {
0045 thisJet = alljets.at(jetIt);
0046 foundJet = true;
0047 }
0048 }
0049 if (!foundJet)
0050 continue;
0051
0052
0053
0054
0055
0056
0057
0058 if (thisJet.hwPt() > mhtJetThresholdHw_ &&
0059 CaloTools::mpEta(abs(thisJet.hwEta())) <= CaloTools::mpEta(mhtEtaMax_)) {
0060 if (thisJet.hwPt() == CaloTools::kSatJet) {
0061 satMht = true;
0062 satMhtHF = true;
0063 } else {
0064 ringHx += (int)((thisJet.hwPt() * CaloTools::cos_coeff[iphi - 1]) >> 4);
0065 ringHy += (int)((thisJet.hwPt() * CaloTools::sin_coeff[iphi - 1]) >> 4);
0066 }
0067 }
0068 if (thisJet.hwPt() > mhtJetThresholdHw_ &&
0069 CaloTools::mpEta(abs(thisJet.hwEta())) <= CaloTools::mpEta(mhtEtaMaxHF_)) {
0070 if (thisJet.hwPt() == CaloTools::kSatJet)
0071 satMhtHF = true;
0072 else {
0073 ringHxHF += (int)((thisJet.hwPt() * CaloTools::cos_coeff[iphi - 1]) >> 4);
0074 ringHyHF += (int)((thisJet.hwPt() * CaloTools::sin_coeff[iphi - 1]) >> 4);
0075 }
0076 }
0077
0078 if (thisJet.hwPt() > httJetThresholdHw_ &&
0079 CaloTools::mpEta(abs(thisJet.hwEta())) <= CaloTools::mpEta(httEtaMax_)) {
0080 if (thisJet.hwPt() == CaloTools::kSatJet) {
0081 satHt = true;
0082 satHtHF = true;
0083 } else
0084 ringHt += thisJet.hwPt();
0085 }
0086 if (thisJet.hwPt() > httJetThresholdHw_ &&
0087 CaloTools::mpEta(abs(thisJet.hwEta())) <= CaloTools::mpEta(httEtaMaxHF_)) {
0088 if (thisJet.hwPt() == CaloTools::kSatJet)
0089 satHtHF = true;
0090 else
0091 ringHtHF += thisJet.hwPt();
0092 }
0093 }
0094
0095 hx += ringHx;
0096 hy += ringHy;
0097 ht += ringHt;
0098
0099 hxHF += ringHxHF;
0100 hyHF += ringHyHF;
0101 htHF += ringHtHF;
0102 }
0103
0104 if (satHt)
0105 ht = 0xffff;
0106 if (satHtHF)
0107 htHF = 0xffff;
0108
0109 if (satMht) {
0110 hx = 0x7fffffff;
0111 hy = 0x7fffffff;
0112 }
0113 if (satMhtHF) {
0114 hxHF = 0x7fffffff;
0115 hyHF = 0x7fffffff;
0116 }
0117
0118 math::XYZTLorentzVector p4;
0119
0120 l1t::EtSum htSumHt(p4, l1t::EtSum::EtSumType::kTotalHt, ht, 0, 0, 0);
0121 l1t::EtSum htSumHx(p4, l1t::EtSum::EtSumType::kTotalHtx, hx, 0, 0, 0);
0122 l1t::EtSum htSumHy(p4, l1t::EtSum::EtSumType::kTotalHty, hy, 0, 0, 0);
0123
0124 l1t::EtSum htSumHtHF(p4, l1t::EtSum::EtSumType::kTotalHtHF, htHF, 0, 0, 0);
0125 l1t::EtSum htSumHxHF(p4, l1t::EtSum::EtSumType::kTotalHtxHF, hxHF, 0, 0, 0);
0126 l1t::EtSum htSumHyHF(p4, l1t::EtSum::EtSumType::kTotalHtyHF, hyHF, 0, 0, 0);
0127
0128 htsums.push_back(htSumHt);
0129 htsums.push_back(htSumHx);
0130 htsums.push_back(htSumHy);
0131
0132 htsums.push_back(htSumHtHF);
0133 htsums.push_back(htSumHxHF);
0134 htsums.push_back(htSumHyHF);
0135 }
0136 }