CMS 3D CMS Logo

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

#include <Stage2Layer2JetSumAlgorithmFirmware.h>

Inheritance diagram for l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1:
l1t::Stage2Layer2JetSumAlgorithm

Public Member Functions

void processEvent (const std::vector< l1t::Jet > &alljets, std::vector< l1t::EtSum > &htsums) override
 
 Stage2Layer2JetSumAlgorithmFirmwareImp1 (CaloParamsHelper const *params)
 
 ~Stage2Layer2JetSumAlgorithmFirmwareImp1 () override=default
 
- Public Member Functions inherited from l1t::Stage2Layer2JetSumAlgorithm
virtual ~Stage2Layer2JetSumAlgorithm ()
 

Private Attributes

int32_t httEtaMax_
 
int32_t httEtaMaxHF_
 
int32_t httJetThresholdHw_
 
int32_t mhtEtaMax_
 
int32_t mhtEtaMaxHF_
 
int32_t mhtJetThresholdHw_
 

Detailed Description

Author
: Jim Brooke

Description: first iteration of stage 2 jet algo

Definition at line 22 of file Stage2Layer2JetSumAlgorithmFirmware.h.

Constructor & Destructor Documentation

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

Definition at line 12 of file Stage2Layer2JetSumAlgorithmFirmwareImp1.cc.

References l1t::CaloParamsHelper::etSumEtaMax(), l1t::CaloParamsHelper::etSumEtThreshold(), httEtaMax_, httEtaMaxHF_, httJetThresholdHw_, l1t::CaloParamsHelper::jetLsb(), l1t::CaloTools::kHFEnd, mhtEtaMax_, mhtEtaMaxHF_, and mhtJetThresholdHw_.

l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::~Stage2Layer2JetSumAlgorithmFirmwareImp1 ( )
overridedefault

Member Function Documentation

void l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::processEvent ( const std::vector< l1t::Jet > &  alljets,
std::vector< l1t::EtSum > &  htsums 
)
overridevirtual

Implements l1t::Stage2Layer2JetSumAlgorithm.

Definition at line 24 of file Stage2Layer2JetSumAlgorithmFirmwareImp1.cc.

References funct::abs(), l1t::CaloTools::cos_coeff, httEtaMax_, httEtaMaxHF_, httJetThresholdHw_, l1t::L1Candidate::hwEta(), l1t::L1Candidate::hwPt(), createfilelist::int, l1t::CaloTools::kHBHENrPhi, l1t::CaloTools::kHFEnd, l1t::CaloTools::kSatJet, L1Analysis::kTotalHt, L1Analysis::kTotalHtHF, L1Analysis::kTotalHtx, L1Analysis::kTotalHtxHF, L1Analysis::kTotalHty, L1Analysis::kTotalHtyHF, mhtEtaMax_, mhtEtaMaxHF_, mhtJetThresholdHw_, l1t::CaloTools::mpEta(), p4, and l1t::CaloTools::sin_coeff.

25 {
26 
27  // etaSide=1 is positive eta, etaSide=-1 is negative eta
28  for (int etaSide=1; etaSide>=-1; etaSide-=2) {
29 
30  int hx(0), hy(0), ht(0);
31  int hxHF(0), hyHF(0), htHF(0);
32 
33  bool satMht(false), satMhtHF(false), satHt(false), satHtHF(false);
34 
35  // loop over rings
36  for (unsigned absieta=1; absieta<=(unsigned int)CaloTools::mpEta(CaloTools::kHFEnd); absieta++) {
37 
38  int ieta = etaSide * absieta;
39 
40  int ringHx(0), ringHy(0), ringHt(0);
41  int ringHxHF(0), ringHyHF(0), ringHtHF(0);
42 
43  // loop over phi
44  for (int iphi=1; iphi<=CaloTools::kHBHENrPhi; iphi++) {
45 
46  // find the jet at this (eta,phi)
47  l1t::Jet thisJet;
48  bool foundJet = false;
49  for (unsigned jetIt=0; jetIt<alljets.size(); jetIt++) {
50  if (CaloTools::mpEta(alljets.at(jetIt).hwEta())==ieta && alljets.at(jetIt).hwPhi()==iphi) {
51  thisJet = alljets.at(jetIt);
52  foundJet = true;
53  }
54  }
55  if (!foundJet) continue;
56 
57  // x- and -y coefficients are truncated by after multiplication of Et by trig coefficient.
58  // The trig coefficients themselves take values [-1023,1023] and so were scaled by
59  // 2^10 = 1024, which requires bitwise shift to the right of the final value by 10 bits.
60  // The 4 below account for part of that and the rest is accounted for at ouput of demux
61  // (see Stage2Layer2DemuxSumsAlgoFirmwareImp1.cc)
62 
64  if(thisJet.hwPt()==CaloTools::kSatJet){
65  satMht=true;
66  satMhtHF=true;
67  }else{
68  ringHx += (int) (( thisJet.hwPt() * CaloTools::cos_coeff[iphi - 1] ) >> 4 );
69  ringHy += (int) (( thisJet.hwPt() * CaloTools::sin_coeff[iphi - 1] ) >> 4 );
70  }
71  }
73  if(thisJet.hwPt()==CaloTools::kSatJet) satMhtHF=true;
74  else{
75  ringHxHF += (int) (( thisJet.hwPt() * CaloTools::cos_coeff[iphi - 1] ) >> 4 );
76  ringHyHF += (int) (( thisJet.hwPt() * CaloTools::sin_coeff[iphi - 1] ) >> 4 );
77  }
78  }
79 
81  if(thisJet.hwPt()==CaloTools::kSatJet){
82  satHt=true;
83  satHtHF=true;
84  }
85  else ringHt += thisJet.hwPt();
86  }
88  if(thisJet.hwPt()==CaloTools::kSatJet) satHtHF=true;
89  else ringHtHF += thisJet.hwPt();
90  }
91  }
92 
93  hx += ringHx;
94  hy += ringHy;
95  ht += ringHt;
96 
97  hxHF += ringHxHF;
98  hyHF += ringHyHF;
99  htHF += ringHtHF;
100 
101  }
102 
103  if(satHt) ht = 0xffff;
104  if(satHtHF) htHF = 0xffff;
105 
106  if(satMht){
107  hx = 0x7fffffff;
108  hy = 0x7fffffff;
109  }
110  if(satMhtHF){
111  hxHF = 0x7fffffff;
112  hyHF = 0x7fffffff;
113  }
114 
116 
117  l1t::EtSum htSumHt(p4,l1t::EtSum::EtSumType::kTotalHt,ht,0,0,0);
118  l1t::EtSum htSumHx(p4,l1t::EtSum::EtSumType::kTotalHtx,hx,0,0,0);
119  l1t::EtSum htSumHy(p4,l1t::EtSum::EtSumType::kTotalHty,hy,0,0,0);
120 
121  l1t::EtSum htSumHtHF(p4,l1t::EtSum::EtSumType::kTotalHtHF,htHF,0,0,0);
122  l1t::EtSum htSumHxHF(p4,l1t::EtSum::EtSumType::kTotalHtxHF,hxHF,0,0,0);
123  l1t::EtSum htSumHyHF(p4,l1t::EtSum::EtSumType::kTotalHtyHF,hyHF,0,0,0);
124 
125  htsums.push_back(htSumHt);
126  htsums.push_back(htSumHx);
127  htsums.push_back(htSumHy);
128 
129  htsums.push_back(htSumHtHF);
130  htsums.push_back(htSumHxHF);
131  htsums.push_back(htSumHyHF);
132 
133  }
134 }
static int mpEta(int ieta)
Definition: CaloTools.cc:200
static const int64_t cos_coeff[72]
Definition: CaloTools.h:120
static const int64_t sin_coeff[72]
Definition: CaloTools.h:121
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
Definition: Jet.h:21
double p4[4]
Definition: TauolaWrapper.h:92
static const int kHFEnd
Definition: CaloTools.h:41
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int hwEta() const
Definition: L1Candidate.h:49
int hwPt() const
Definition: L1Candidate.h:48
static const int kHBHENrPhi
Definition: CaloTools.h:44
static const int kSatJet
Definition: CaloTools.h:58

Member Data Documentation

int32_t l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::httEtaMax_
private
int32_t l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::httEtaMaxHF_
private
int32_t l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::httJetThresholdHw_
private
int32_t l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::mhtEtaMax_
private
int32_t l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::mhtEtaMaxHF_
private
int32_t l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::mhtJetThresholdHw_
private