Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:04:33

0001 #include "DataFormats/L1THGCal/interface/HGCalTower.h"
0002 #include "FWCore/Utilities/interface/EDMException.h"
0003 
0004 using l1t::HGCalTower;
0005 using l1t::L1Candidate;
0006 
0007 HGCalTower::HGCalTower(double etEm,
0008                        double etHad,
0009                        double eta,
0010                        double phi,
0011                        uint32_t id,
0012                        int hwpt,
0013                        int hweta,
0014                        int hwphi,
0015                        int qual,
0016                        int hwEtEm,
0017                        int hwEtHad,
0018                        int hwEtRatio)
0019     : L1Candidate(PolarLorentzVector(etEm + etHad, eta, phi, 0.), hwpt, hweta, hwphi, qual),
0020       etEm_(etEm),
0021       etHad_(etHad),
0022       id_(id),
0023       hwEtEm_(hwEtEm),
0024       hwEtHad_(hwEtHad),
0025       hwEtRatio_(hwEtRatio) {}
0026 
0027 HGCalTower::~HGCalTower() {}
0028 
0029 void HGCalTower::addEtEm(double et) {
0030   etEm_ += et;
0031   addEt(et);
0032 }
0033 
0034 void HGCalTower::addEtHad(double et) {
0035   etHad_ += et;
0036   addEt(et);
0037 }
0038 
0039 void HGCalTower::addEt(double et) { this->setP4(PolarLorentzVector(this->pt() + et, this->eta(), this->phi(), 0.)); }
0040 
0041 const HGCalTower& HGCalTower::operator+=(const HGCalTower& tower) {
0042   // NOTE: assume same eta and phi -> need an explicit check on the ID
0043   if (id().rawId() != tower.id().rawId()) {
0044     throw edm::Exception(edm::errors::StdException, "StdException")
0045         << "HGCalTower: adding to this tower with ID: " << id().rawId()
0046         << " one with different ID: " << tower.id().rawId() << std::endl;
0047   }
0048   addEt(tower.pt());
0049   etEm_ += tower.etEm();
0050   etHad_ += tower.etHad();
0051 
0052   return *this;
0053 }