CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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

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

Private Attributes

CaloParamsHelperparams_
 

Detailed Description

Authors
: R. Alex Barbieri

Description: DiTau Algorithm

Definition at line 56 of file Stage1Layer2HFRingSumAlgorithmImp.h.

Constructor & Destructor Documentation

l1t::Stage1Layer2DiTauAlgorithm::Stage1Layer2DiTauAlgorithm ( CaloParamsHelper params)

Definition at line 15 of file Stage1Layer2DiTauAlgorithm.cc.

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

Definition at line 20 of file Stage1Layer2DiTauAlgorithm.cc.

20 {}

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 
)
virtual

Implements l1t::Stage1Layer2HFRingSumAlgorithm.

Definition at line 23 of file Stage1Layer2DiTauAlgorithm.cc.

References gather_cfg::cout, l1t::L1Candidate::hwPt(), L1GctHFRingEtSums::raw(), alignCSCRings::s, L1GctHFRingEtSums::setEtSum(), l1t::L1Candidate::setHwPt(), and cond::to_string().

26  {
27 
28  std::vector<l1t::Tau> *isoTaus = new std::vector<l1t::Tau>();
29  for(std::vector<l1t::Tau>::const_iterator itTau = taus->begin();
30  itTau != taus->end(); ++itTau){
31  if( !itTau->hwIso() ) continue;
32  isoTaus->push_back( *itTau );
33  }
34 
35  int isoPtMax=0;
36  int diIsoPtMax=0;
37  int triIsoPtMax=0;
38  int quadIsoPtMax=0;
39  if(isoTaus->size()>0) {
40  isoPtMax= (*isoTaus).at(0).hwPt();
41  if (isoTaus->size()>1) diIsoPtMax = (*isoTaus).at(1).hwPt();
42  if (isoTaus->size()>2) triIsoPtMax = (*isoTaus).at(2).hwPt();
43  if (isoTaus->size()>3) quadIsoPtMax= (*isoTaus).at(3).hwPt();
44  }
45 
46  int rankIso = 0;
47  int rankDiIso = 0;
48  int rankTriIso = 0;
49  int rankQuadIso = 0;
50 
51  bool useLut=true;
52  // encode the highest pt Iso and DiIso in the HF ET rings
53  if (useLut){
54  unsigned int MAX_LUT_ADDRESS = params_->tauEtToHFRingEtLUT()->maxSize()-1;
55  unsigned int lutAddress = isoPtMax;
56  if (lutAddress > MAX_LUT_ADDRESS) lutAddress = MAX_LUT_ADDRESS;
57  rankIso=params_->tauEtToHFRingEtLUT()->data(lutAddress);
58 
59  lutAddress = diIsoPtMax;
60  if (lutAddress > MAX_LUT_ADDRESS) lutAddress = MAX_LUT_ADDRESS;
61  rankDiIso=params_->tauEtToHFRingEtLUT()->data(lutAddress);
62 
63  lutAddress = triIsoPtMax;
64  if (lutAddress > MAX_LUT_ADDRESS) lutAddress = MAX_LUT_ADDRESS;
65  rankTriIso=params_->tauEtToHFRingEtLUT()->data(lutAddress);
66 
67  lutAddress = quadIsoPtMax;
68  if (lutAddress > MAX_LUT_ADDRESS) lutAddress = MAX_LUT_ADDRESS;
69  rankQuadIso=params_->tauEtToHFRingEtLUT()->data(lutAddress);
70 
71  }else{
72  double etIso = params_->jetScale().et( isoPtMax ); // convert from hwPt to Physical pT
73  double etDiIso = params_->jetScale().et( diIsoPtMax );
74  double etTriIso = params_->jetScale().et( triIsoPtMax );
75  double etQuadIso = params_->jetScale().et( quadIsoPtMax );
76  rankIso = params_->HfRingScale().rank( etIso ); //convert to HfRingScale Rank
77  rankDiIso = params_->HfRingScale().rank( etDiIso );
78  rankTriIso = params_->HfRingScale().rank( etTriIso );
79  rankQuadIso = params_->HfRingScale().rank( etQuadIso );
80  }
81 
82  // std::cout << "Max Iso Tau pT: " << isoPtMax << "\t" << etIso << "\t" << rankIso << std::endl;
83 
85  s.setEtSum(0, rankIso);
86  s.setEtSum(1, rankDiIso);
87  s.setEtSum(2, rankTriIso);
88  s.setEtSum(3, rankQuadIso);
89  uint16_t raw = s.raw();
90  spares->setHwPt(raw);
91 
92  delete isoTaus;
93 
94 
95  const bool verbose = false;
96  if(verbose)
97  {
98  std::cout << "HF Ring Sums (Isolated Taus)" << std::endl;
99  std::cout << bitset<12>(spares->hwPt()).to_string() << std::endl;
100  }
101 }
L1CaloEtScale jetScale()
unsigned int maxSize() const
Definition: LUT.h:53
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
std::string to_string(const T &t)
Definition: Logger.cc:26
void setEtSum(unsigned i, uint16_t et)
set a sum
l1t::LUT * tauEtToHFRingEtLUT()
L1 GCT HF ring Et sums.
uint16_t raw() const
get the raw data
tuple cout
Definition: gather_cfg.py:121
int data(unsigned int address) const
Definition: LUT.h:46
L1CaloEtScale HfRingScale()

Member Data Documentation

CaloParamsHelper* l1t::Stage1Layer2DiTauAlgorithm::params_
private

Definition at line 65 of file Stage1Layer2HFRingSumAlgorithmImp.h.