CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
l1t::Stage2Layer2DemuxEGAlgoFirmwareImp1 Class Reference

#include <Stage2Layer2DemuxEGAlgoFirmware.h>

Inheritance diagram for l1t::Stage2Layer2DemuxEGAlgoFirmwareImp1:
l1t::Stage2Layer2DemuxEGAlgo

Public Member Functions

void processEvent (const std::vector< EGamma > &inputEgammas, std::vector< EGamma > &outputEgammas) override
 
 Stage2Layer2DemuxEGAlgoFirmwareImp1 (CaloParamsHelper const *params)
 
 ~Stage2Layer2DemuxEGAlgoFirmwareImp1 () override
 
- Public Member Functions inherited from l1t::Stage2Layer2DemuxEGAlgo
virtual ~Stage2Layer2DemuxEGAlgo ()
 

Private Attributes

CaloParamsHelper const * params_
 

Detailed Description

Definition at line 22 of file Stage2Layer2DemuxEGAlgoFirmware.h.

Constructor & Destructor Documentation

l1t::Stage2Layer2DemuxEGAlgoFirmwareImp1::Stage2Layer2DemuxEGAlgoFirmwareImp1 ( CaloParamsHelper const *  params)

Definition at line 35 of file Stage2Layer2DemuxEGAlgoFirmwareImp1.cc.

35  :
36  params_(params)
37 {
38 
39 
40 }
l1t::Stage2Layer2DemuxEGAlgoFirmwareImp1::~Stage2Layer2DemuxEGAlgoFirmwareImp1 ( )
override

Definition at line 43 of file Stage2Layer2DemuxEGAlgoFirmwareImp1.cc.

43  {
44 
45 
46 }

Member Function Documentation

void l1t::Stage2Layer2DemuxEGAlgoFirmwareImp1::processEvent ( const std::vector< EGamma > &  inputEgammas,
std::vector< EGamma > &  outputEgammas 
)
overridevirtual

Implements l1t::Stage2Layer2DemuxEGAlgo.

Definition at line 49 of file Stage2Layer2DemuxEGAlgoFirmwareImp1.cc.

References funct::abs(), SoftLeptonByDistance_cfi::distance, down, l1t::CaloParamsHelper::egLsb(), PVValHelper::eta, mps_fire::i, M_PI, AlCaHLTBitMon_ParallelJobs::p, and params_.

50  {
51 
52  vector<pair<int,double> > etaGT;
53  etaGT.reserve(115);
54  for(int i=0;i<115;i++)
55  etaGT.push_back( make_pair(i,i*(0.087/2.)) );
56 
57  vector<pair<int,double> > phiGT;
58  phiGT.reserve(145);
59  for(int i=0;i<145;i++)
60  phiGT.push_back( make_pair(i,i*(M_PI/72.)) );
61  phiGT[144] = make_pair(0,2*M_PI); //2pi = 0
62 
63  outputEGammas = inputEGammas;
64 
65  for(auto& egamma : outputEGammas){
66 
67  double eta = egamma.eta();
68  double phi = egamma.phi();
69  if(phi<0)
70  phi+=2*M_PI;
71 
72  double minDistance = 99999.;
73  pair<int, double> closestPoint = make_pair(0,0.);
74 
75  for(const auto& p : etaGT){
76  double distance = abs(abs(eta) - p.second);
77  if(distance < minDistance){
78  closestPoint = p;
79  minDistance = distance;
80  }
81  }
82 
83  int hwEta_GT = (eta>0) ? closestPoint.first : - closestPoint.first;
84  double eta_GT = (eta>0) ? closestPoint.second : - closestPoint.second;
85 
86  minDistance = 99999.;
87  closestPoint = make_pair(0,0.);
88 
89  for(const auto& p : phiGT){
90  double distance = abs(phi - p.second);
91  if(distance < minDistance){
92  closestPoint = p;
93  minDistance = distance;
94  }
95  }
96 
97  int hwPhi_GT = closestPoint.first;
98  double phi_GT = closestPoint.second;
99 
100  egamma.setHwEta(hwEta_GT);
101  egamma.setHwPhi(hwPhi_GT);
102 
103  //9 bits threshold
104  if(egamma.hwPt()>511)
105  egamma.setHwPt(511);
106 
107  math::PtEtaPhiMLorentzVector egammaP4(egamma.hwPt()*params_->egLsb(), eta_GT, phi_GT, 0.);
108  egamma.setP4(egammaP4);
109 
110 
111  }
112 
113  //sorting with descending pT
114  std::vector<l1t::EGamma>::iterator start_ = outputEGammas.begin();
115  std::vector<l1t::EGamma>::iterator end_ = outputEGammas.end();
116  BitonicSort<l1t::EGamma>(down, start_, end_);
117 
118 
119 }
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
Definition: LorentzVector.h:25
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
#define M_PI

Member Data Documentation

CaloParamsHelper const* l1t::Stage2Layer2DemuxEGAlgoFirmwareImp1::params_
private

Definition at line 31 of file Stage2Layer2DemuxEGAlgoFirmware.h.

Referenced by processEvent().