CMS 3D CMS Logo

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

#include <Stage1Layer2HFRingSumAlgorithmImp.h>

Inheritance diagram for l1t::Stage1Layer2DiTauAlgorithm:
l1t::Stage1Layer2HFRingSumAlgorithm

Public Member Functions

void processEvent (const std::vector< l1t::CaloRegion > &regions, const std::vector< l1t::CaloEmCand > &EMCands, const std::vector< l1t::Tau > *taus, l1t::CaloSpare *spare) override
 
 Stage1Layer2DiTauAlgorithm (CaloParamsHelper const *params)
 
 ~Stage1Layer2DiTauAlgorithm () override=default
 
- Public Member Functions inherited from l1t::Stage1Layer2HFRingSumAlgorithm
virtual ~Stage1Layer2HFRingSumAlgorithm ()
 

Private Attributes

CaloParamsHelper const * params_
 

Detailed Description

Authors
: R. Alex Barbieri

Description: DiTau Algorithm

Definition at line 55 of file Stage1Layer2HFRingSumAlgorithmImp.h.

Constructor & Destructor Documentation

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

Definition at line 15 of file Stage1Layer2DiTauAlgorithm.cc.

15  : params_(params)
16 {
17 }
l1t::Stage1Layer2DiTauAlgorithm::~Stage1Layer2DiTauAlgorithm ( )
overridedefault

Member Function Documentation

void l1t::Stage1Layer2DiTauAlgorithm::processEvent ( const std::vector< l1t::CaloRegion > &  regions,
const std::vector< l1t::CaloEmCand > &  EMCands,
const std::vector< l1t::Tau > *  taus,
l1t::CaloSpare spare 
)
overridevirtual

Implements l1t::Stage1Layer2HFRingSumAlgorithm.

Definition at line 20 of file Stage1Layer2DiTauAlgorithm.cc.

References l1t::LUT::data(), L1CaloEtScale::et(), l1t::CaloParamsHelper::HfRingScale(), l1t::CaloParamsHelper::jetScale(), l1t::LUT::maxSize(), params_, L1CaloEtScale::rank(), L1GctHFRingEtSums::raw(), alignCSCRings::s, L1GctHFRingEtSums::setEtSum(), l1t::L1Candidate::setHwPt(), and l1t::CaloParamsHelper::tauEtToHFRingEtLUT().

23  {
24 
25  std::vector<l1t::Tau> isoTaus;
26  for(std::vector<l1t::Tau>::const_iterator itTau = taus->begin();
27  itTau != taus->end(); ++itTau){
28  if( !itTau->hwIso() ) continue;
29  isoTaus.push_back( *itTau );
30  }
31 
32  int isoPtMax=0;
33  int diIsoPtMax=0;
34  int triIsoPtMax=0;
35  int quadIsoPtMax=0;
36  if(!isoTaus.empty()) {
37  isoPtMax= isoTaus[0].hwPt();
38  if (isoTaus.size()>1) diIsoPtMax = isoTaus[1].hwPt();
39  if (isoTaus.size()>2) triIsoPtMax = isoTaus[2].hwPt();
40  if (isoTaus.size()>3) quadIsoPtMax= isoTaus[3].hwPt();
41  }
42 
43  int rankIso = 0;
44  int rankDiIso = 0;
45  int rankTriIso = 0;
46  int rankQuadIso = 0;
47 
48  bool useLut=true;
49  // encode the highest pt Iso and DiIso in the HF ET rings
50  if (useLut){
51  unsigned int MAX_LUT_ADDRESS = params_->tauEtToHFRingEtLUT()->maxSize()-1;
52  unsigned int lutAddress = isoPtMax;
53  if (lutAddress > MAX_LUT_ADDRESS) lutAddress = MAX_LUT_ADDRESS;
54  rankIso=params_->tauEtToHFRingEtLUT()->data(lutAddress);
55 
56  lutAddress = diIsoPtMax;
57  if (lutAddress > MAX_LUT_ADDRESS) lutAddress = MAX_LUT_ADDRESS;
58  rankDiIso=params_->tauEtToHFRingEtLUT()->data(lutAddress);
59 
60  lutAddress = triIsoPtMax;
61  if (lutAddress > MAX_LUT_ADDRESS) lutAddress = MAX_LUT_ADDRESS;
62  rankTriIso=params_->tauEtToHFRingEtLUT()->data(lutAddress);
63 
64  lutAddress = quadIsoPtMax;
65  if (lutAddress > MAX_LUT_ADDRESS) lutAddress = MAX_LUT_ADDRESS;
66  rankQuadIso=params_->tauEtToHFRingEtLUT()->data(lutAddress);
67 
68  }else{
69  double etIso = params_->jetScale().et( isoPtMax ); // convert from hwPt to Physical pT
70  double etDiIso = params_->jetScale().et( diIsoPtMax );
71  double etTriIso = params_->jetScale().et( triIsoPtMax );
72  double etQuadIso = params_->jetScale().et( quadIsoPtMax );
73  rankIso = params_->HfRingScale().rank( etIso ); //convert to HfRingScale Rank
74  rankDiIso = params_->HfRingScale().rank( etDiIso );
75  rankTriIso = params_->HfRingScale().rank( etTriIso );
76  rankQuadIso = params_->HfRingScale().rank( etQuadIso );
77  }
78 
79  // std::cout << "Max Iso Tau pT: " << isoPtMax << "\t" << etIso << "\t" << rankIso << std::endl;
80 
82  s.setEtSum(0, rankIso);
83  s.setEtSum(1, rankDiIso);
84  s.setEtSum(2, rankTriIso);
85  s.setEtSum(3, rankQuadIso);
86  uint16_t raw = s.raw();
87  spares->setHwPt(raw);
88 }
L1CaloEtScale jetScale() const
unsigned int maxSize() const
Definition: LUT.h:53
L1CaloEtScale HfRingScale() const
double et(const uint16_t rank) const
convert from rank to physically meaningful quantity
uint16_t rank(const uint16_t linear) const
convert from linear Et scale to rank scale
void setEtSum(unsigned i, uint16_t et)
set a sum
L1 GCT HF ring Et sums.
l1t::LUT const * tauEtToHFRingEtLUT() const
uint16_t raw() const
get the raw data
int data(unsigned int address) const
Definition: LUT.h:46

Member Data Documentation

CaloParamsHelper const* l1t::Stage1Layer2DiTauAlgorithm::params_
private

Definition at line 64 of file Stage1Layer2HFRingSumAlgorithmImp.h.

Referenced by processEvent().