CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Attributes | Private Attributes
l1t::Stage1TauIsolationLUT Class Reference

#include <Stage1TauIsolationLUT.h>

Public Member Functions

unsigned lutAddress (unsigned int, unsigned int) const
 
int lutPayload (unsigned int) const
 
 Stage1TauIsolationLUT (CaloParamsHelper *params)
 
virtual ~Stage1TauIsolationLUT ()
 

Static Public Attributes

static const unsigned int lut_version = 1
 
static const unsigned int nbits_data = 1
 
static const unsigned int nbitsJet = 8
 
static const unsigned int nbitsTau = 8
 

Private Attributes

CaloParamsHelper *const params_
 

Detailed Description

Definition at line 19 of file Stage1TauIsolationLUT.h.

Constructor & Destructor Documentation

Stage1TauIsolationLUT::Stage1TauIsolationLUT ( CaloParamsHelper params)

Definition at line 15 of file Stage1TauIsolationLUT.cc.

15  : params_(params)
16 {};
CaloParamsHelper *const params_
Stage1TauIsolationLUT::~Stage1TauIsolationLUT ( )
virtual

Definition at line 84 of file Stage1TauIsolationLUT.cc.

84 {};

Member Function Documentation

unsigned Stage1TauIsolationLUT::lutAddress ( unsigned int  tauPt,
unsigned int  jetPt 
) const

Definition at line 18 of file Stage1TauIsolationLUT.cc.

References funct::abs(), gather_cfg::cout, l1t::CaloParamsHelper::jetLsb(), nbitsJet, nbitsTau, params_, and funct::pow().

19 {
20  const unsigned int maxJet = pow(2,nbitsJet)-1;
21  const unsigned int maxTau = pow(2,nbitsTau)-1;
22 
23  // lut only defined for 8 bit Jet ET
24  if ( (nbitsJet != 8) || (nbitsTau != 8) ) return 0;
25 
26  double jetLsb=params_->jetLsb();
27  if (std::abs(jetLsb-0.5) > 0.0001){
28  std::cout << "%Stage1TauIsolationLUT-E-Unexpected jetLsb " << jetLsb << " IsoTau calculation will be broken"<< std::endl;
29  return 0;
30  }
31 
32  tauPt=tauPt>>1;
33  jetPt=jetPt>>1;
34 
35  if (jetPt>maxJet) jetPt=maxJet;
36  if (tauPt>maxTau) tauPt=maxTau;
37 
38  unsigned int address= (jetPt << nbitsTau) + tauPt;
39  return address;
40 }
double jetLsb() const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const unsigned int nbitsTau
static const unsigned int nbitsJet
tuple cout
Definition: gather_cfg.py:121
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
CaloParamsHelper *const params_
int Stage1TauIsolationLUT::lutPayload ( unsigned int  address) const

Definition at line 42 of file Stage1TauIsolationLUT.cc.

References gather_cfg::cout, nbitsJet, nbitsTau, params_, funct::pow(), l1t::CaloParamsHelper::tauMaxJetIsolationA(), l1t::CaloParamsHelper::tauMaxJetIsolationB(), and l1t::CaloParamsHelper::tauMinPtJetIsolationB().

Referenced by l1t::L1TCaloStage1LutWriter::writeIsoTauLut().

43 {
44 
45  const unsigned int maxJet = pow(2,nbitsJet)-1;
46  const unsigned int maxTau = pow(2,nbitsTau)-1;
47 
48  const double tauMaxJetIsolationA = params_->tauMaxJetIsolationA();
49  const double tauMaxJetIsolationB = params_->tauMaxJetIsolationB();
50  const double tauMinPtJetIsolationB = params_->tauMinPtJetIsolationB();
51 
52  unsigned int maxAddress = pow(2,nbitsJet+nbitsTau)-1;
53  if (address > maxAddress){ // check that address is right length
54  std::cout << "%Stage1TauIsolationLUT-E-Address: " << address
55  << " exceeds maximum value allowed. Setting value to maximum (" << maxAddress << ")" << std::endl;
56  address = maxAddress;
57  }
58  // extract the jet and tau et from the address
59  int ijetet = address >> nbitsTau;
60  int itauet = address & 0xff;
61 
62 
63  double jet_pt = static_cast <float> (ijetet); // no need convert to physical eT, as right shift (>>1) operation
64  double tau_pt = static_cast <float> (itauet); // in lutAddress automatically converts to physical eT, assuming lsb=0.5
65 
66  //std::cout << "ijetet: " << ijetet << "\titauet: " << itauet << std::endl;
67  //std::cout << "jetet: " << jet_pt << "\ttauet: " << tau_pt << std::endl;
68 
69  int isol=0;
70  if (maxTau == (unsigned) itauet){
71  isol=1;
72  } else if (maxJet == (unsigned) ijetet){
73  isol=1;
74  } else {
75  double relativeJetIsolationTau = (jet_pt / tau_pt) -1;
76 
77  double isolCut=tauMaxJetIsolationA;
78  if (tau_pt >= tauMinPtJetIsolationB)isolCut=tauMaxJetIsolationB;
79  if (relativeJetIsolationTau < isolCut) isol=1;
80  }
81  return isol;
82 }
double tauMaxJetIsolationB() const
double tauMinPtJetIsolationB() const
static const unsigned int nbitsTau
static const unsigned int nbitsJet
tuple cout
Definition: gather_cfg.py:121
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
CaloParamsHelper *const params_
double tauMaxJetIsolationA() const

Member Data Documentation

const unsigned int Stage1TauIsolationLUT::lut_version = 1
static

Definition at line 24 of file Stage1TauIsolationLUT.h.

Referenced by l1t::L1TCaloStage1LutWriter::writeIsoTauLut().

const unsigned int Stage1TauIsolationLUT::nbits_data = 1
static

Definition at line 23 of file Stage1TauIsolationLUT.h.

Referenced by l1t::L1TCaloStage1LutWriter::writeIsoTauLut().

const unsigned int Stage1TauIsolationLUT::nbitsJet = 8
static
const unsigned int Stage1TauIsolationLUT::nbitsTau = 8
static
CaloParamsHelper* const l1t::Stage1TauIsolationLUT::params_
private

Definition at line 33 of file Stage1TauIsolationLUT.h.

Referenced by lutAddress(), and lutPayload().