CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes
HGCalConcentratorSuperTriggerCellImpl Class Reference

#include <HGCalConcentratorSuperTriggerCellImpl.h>

Classes

class  SuperTriggerCell
 

Public Member Functions

void eventSetup (const edm::EventSetup &es)
 
 HGCalConcentratorSuperTriggerCellImpl (const edm::ParameterSet &conf)
 
void select (const std::vector< l1t::HGCalTriggerCell > &trigCellVecInput, std::vector< l1t::HGCalTriggerCell > &trigCellVecOutput)
 

Private Types

enum  EnergyDivisionType { superTriggerCell, oneBitFraction, equalShare }
 

Private Member Functions

void assignSuperTriggerCellEnergyAndPosition (l1t::HGCalTriggerCell &c, const SuperTriggerCell &stc) const
 
void createAllTriggerCells (std::unordered_map< unsigned, SuperTriggerCell > &STCs, std::vector< l1t::HGCalTriggerCell > &trigCellVecOutput) const
 
uint32_t getCompressedSTCEnergy (const SuperTriggerCell &stc) const
 
float getTriggerCellOneBitFraction (float tcPt, float sumPt) const
 

Private Attributes

HGCalTriggerCellCalibration calibration_
 
bool coarsenTriggerCells_
 
HGCalCoarseTriggerCellMapping coarseTCmapping_
 
EnergyDivisionType energyDivisionType_
 
bool fixedDataSizePerHGCROC_
 
double oneBitFractionHighValue_
 
double oneBitFractionLowValue_
 
double oneBitFractionThreshold_
 
HGCalCoarseTriggerCellMapping superTCmapping_
 
HGCalTriggerTools triggerTools_
 
HGCalVFECompressionImpl vfeCompression_
 

Static Private Attributes

static int kHighDensityThickness_ = 0
 
static int kOddNumberMask_ = 1
 
static int kTriggerCellsForDivision_ = 4
 

Detailed Description

Definition at line 13 of file HGCalConcentratorSuperTriggerCellImpl.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

HGCalConcentratorSuperTriggerCellImpl::HGCalConcentratorSuperTriggerCellImpl ( const edm::ParameterSet conf)

Definition at line 3 of file HGCalConcentratorSuperTriggerCellImpl.cc.

References energyDivisionType_, equalShare, edm::ParameterSet::getParameter(), oneBitFraction, oneBitFractionHighValue_, oneBitFractionLowValue_, oneBitFractionThreshold_, AlCaHLTBitMon_QueryRunRegistry::string, and superTriggerCell.

4  : fixedDataSizePerHGCROC_(conf.getParameter<bool>("fixedDataSizePerHGCROC")),
5  coarsenTriggerCells_(conf.getParameter<bool>("coarsenTriggerCells")),
6  coarseTCmapping_(conf.getParameter<std::vector<unsigned>>("ctcSize")),
7  superTCmapping_(conf.getParameter<std::vector<unsigned>>("stcSize")),
8  calibration_(conf.getParameterSet("superTCCalibration")),
9  vfeCompression_(conf.getParameterSet("superTCCompression")) {
10  std::string energyType(conf.getParameter<string>("type_energy_division"));
11 
12  if (energyType == "superTriggerCell") {
14  } else if (energyType == "oneBitFraction") {
16 
17  oneBitFractionThreshold_ = conf.getParameter<double>("oneBitFractionThreshold");
18  oneBitFractionLowValue_ = conf.getParameter<double>("oneBitFractionLowValue");
19  oneBitFractionHighValue_ = conf.getParameter<double>("oneBitFractionHighValue");
20 
21  } else if (energyType == "equalShare") {
23 
24  } else {
26  }
27 }
T getParameter(std::string const &) const
ParameterSet const & getParameterSet(std::string const &) const

Member Function Documentation

void HGCalConcentratorSuperTriggerCellImpl::assignSuperTriggerCellEnergyAndPosition ( l1t::HGCalTriggerCell c,
const SuperTriggerCell stc 
) const
private

Definition at line 93 of file HGCalConcentratorSuperTriggerCellImpl.cc.

References HGCalTriggerCellCalibration::calibrateInGeV(), calibration_, coarsenTriggerCells_, coarseTCmapping_, HLTTauDQMOffline_cfi::denominator, l1t::HGCalTriggerCell::detId(), energyDivisionType_, equalShare, PV3DBase< T, PVType, FrameType >::eta(), Exception, fixedDataSizePerHGCROC_, cropTnPTrees::frac, HGCalCoarseTriggerCellMapping::getCoarseTriggerCellId(), HGCalCoarseTriggerCellMapping::getCoarseTriggerCellPosition(), getCompressedSTCEnergy(), HGCalCoarseTriggerCellMapping::getConstituentTriggerCells(), HGCalConcentratorSuperTriggerCellImpl::SuperTriggerCell::getFractionSum(), HGCalConcentratorSuperTriggerCellImpl::SuperTriggerCell::getMaxId(), HGCalConcentratorSuperTriggerCellImpl::SuperTriggerCell::getSTCId(), HGCalConcentratorSuperTriggerCellImpl::SuperTriggerCell::getSumPt(), HGCalTriggerTools::getTCPosition(), HGCalConcentratorSuperTriggerCellImpl::SuperTriggerCell::getTCpt(), getTriggerCellOneBitFraction(), kHighDensityThickness_, kTriggerCellsForDivision_, oneBitFraction, p4, PV3DBase< T, PVType, FrameType >::phi(), point, reco::LeafCandidate::pt(), l1t::L1Candidate::setHwPt(), reco::LeafCandidate::setP4(), l1t::HGCalTriggerCell::setPosition(), findQualityFiles::size, superTCmapping_, superTriggerCell, Calorimetry_cff::thickness, HGCalTriggerTools::thicknessIndex(), and triggerTools_.

Referenced by createAllTriggerCells(), and HGCalConcentratorSuperTriggerCellImpl::SuperTriggerCell::size().

94  {
95  //Compress and recalibrate STC energy
96  uint32_t compressed_value = getCompressedSTCEnergy(stc);
97 
99 
103  } else {
104  point = triggerTools_.getTCPosition(c.detId());
105  }
106  c.setPosition(point);
107 
108  math::PtEtaPhiMLorentzVector p4(c.pt(), point.eta(), point.phi(), 0.);
109  c.setP4(p4);
110 
112  if (c.detId() == stc.getMaxId()) {
113  c.setHwPt(compressed_value);
115  } else {
116  throw cms::Exception("NonMaxIdSuperTriggerCell")
117  << "Trigger Cell with detId not equal to the maximum of the superTriggerCell found";
118  }
119  } else if (energyDivisionType_ == equalShare) {
120  double coarseTriggerCellSize =
122  ? double(
124  .size())
125  : 1.;
126 
127  double denominator =
129  ? double(kTriggerCellsForDivision_)
130  : double(superTCmapping_.getConstituentTriggerCells(stc.getSTCId()).size()) / coarseTriggerCellSize;
131 
132  c.setHwPt(std::round(compressed_value / denominator));
134 
135  } else if (energyDivisionType_ == oneBitFraction) {
136  double frac = 0;
137 
138  if (c.detId() != stc.getMaxId()) {
139  frac = getTriggerCellOneBitFraction(stc.getTCpt(c.detId()), stc.getSumPt());
140  } else {
141  frac = 1 - stc.getFractionSum();
142  }
143 
144  c.setHwPt(std::round(compressed_value * frac));
146  }
147 }
size
Write out results.
float getTriggerCellOneBitFraction(float tcPt, float sumPt) const
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
double pt() const final
transverse momentum
uint32_t getCoarseTriggerCellId(uint32_t detid) const
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
Definition: LorentzVector.h:25
uint32_t detId() const
double p4[4]
Definition: TauolaWrapper.h:92
int thicknessIndex(const DetId &, bool tc=false) const
void calibrateInGeV(l1t::HGCalTriggerCell &) const
T eta() const
Definition: PV3DBase.h:73
void setHwPt(int pt)
Definition: L1Candidate.h:28
std::vector< uint32_t > getConstituentTriggerCells(uint32_t ctcId) const
uint32_t getCompressedSTCEnergy(const SuperTriggerCell &stc) const
GlobalPoint getTCPosition(const DetId &id) const
GlobalPoint getCoarseTriggerCellPosition(uint32_t ctcId) const
void setPosition(const GlobalPoint &position)
void setP4(const LorentzVector &p4) final
set 4-momentum
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
void HGCalConcentratorSuperTriggerCellImpl::createAllTriggerCells ( std::unordered_map< unsigned, SuperTriggerCell > &  STCs,
std::vector< l1t::HGCalTriggerCell > &  trigCellVecOutput 
) const
private

Definition at line 36 of file HGCalConcentratorSuperTriggerCellImpl.cc.

References assignSuperTriggerCellEnergyAndPosition(), coarseTCmapping_, energyDivisionType_, Exception, fixedDataSizePerHGCROC_, HGCalCoarseTriggerCellMapping::getCoarseTriggerCellId(), HGCalCoarseTriggerCellMapping::getConstituentTriggerCells(), HGCalCoarseTriggerCellMapping::getRepresentativeDetId(), getTriggerCellOneBitFraction(), HGCalTriggerTools::getTriggerGeometry(), HGCalTriggerGeometryBase::isV9Geometry(), kHighDensityThickness_, oneBitFraction, alignCSCRings::s, l1t::HGCalTriggerCell::setDetId(), superTCmapping_, superTriggerCell, Calorimetry_cff::thickness, HGCalTriggerTools::thicknessIndex(), triggerTools_, and HGCalTriggerGeometryBase::validTriggerCell().

Referenced by select(), and HGCalConcentratorSuperTriggerCellImpl::SuperTriggerCell::size().

37  {
38  for (auto& s : STCs) {
39  std::vector<uint32_t> output_ids = superTCmapping_.getConstituentTriggerCells(s.second.getSTCId());
40 
41  int thickness = (!output_ids.empty() ? triggerTools_.thicknessIndex(output_ids.at(0), true) : 0);
42 
43  for (const auto& id : output_ids) {
46  continue;
47  }
48 
50  continue;
51  }
52 
53  l1t::HGCalTriggerCell triggerCell;
54  triggerCell.setDetId(id);
55  if (energyDivisionType_ == superTriggerCell && id != s.second.getMaxId()) {
56  continue;
57  }
58 
59  DetId tc_Id(id);
60 
61  //To guard against the case in v8 geometry where
62  //there might be different thicknesses within a module
63  //This is a small effect, but in principle energy might
64  //be lost.
65  if (superTCmapping_.getCoarseTriggerCellId(id) != s.second.getSTCId()) {
67  throw cms::Exception("NonExistingCoarseTC")
68  << "The coarse trigger cell correponsing to the nominal trigger cell does not exist";
69  } else {
70  continue;
71  }
72  }
73 
74  trigCellVecOutput.push_back(triggerCell);
75 
76  if (energyDivisionType_ == oneBitFraction) { //Get the 1 bit fractions
77 
78  if (id != s.second.getMaxId()) {
79  float tc_fraction = getTriggerCellOneBitFraction(s.second.getTCpt(id), s.second.getSumPt());
80  s.second.addToFractionSum(tc_fraction);
81  }
82  }
83  }
84  }
85 
86  // assign energy
87  for (l1t::HGCalTriggerCell& tc : trigCellVecOutput) {
88  const auto& stc = STCs[superTCmapping_.getCoarseTriggerCellId(tc.detId())];
90  }
91 }
float getTriggerCellOneBitFraction(float tcPt, float sumPt) const
const HGCalTriggerGeometryBase * getTriggerGeometry() const
uint32_t getCoarseTriggerCellId(uint32_t detid) const
void setDetId(uint32_t detid)
Definition: DetId.h:17
int thicknessIndex(const DetId &, bool tc=false) const
uint32_t getRepresentativeDetId(uint32_t tcid) const
virtual bool validTriggerCell(const unsigned trigger_cell_id) const =0
std::vector< uint32_t > getConstituentTriggerCells(uint32_t ctcId) const
void assignSuperTriggerCellEnergyAndPosition(l1t::HGCalTriggerCell &c, const SuperTriggerCell &stc) const
void HGCalConcentratorSuperTriggerCellImpl::eventSetup ( const edm::EventSetup es)
inline
uint32_t HGCalConcentratorSuperTriggerCellImpl::getCompressedSTCEnergy ( const SuperTriggerCell stc) const
private

Definition at line 29 of file HGCalConcentratorSuperTriggerCellImpl.cc.

References HGCalVFECompressionImpl::compressSingle(), HGCalConcentratorSuperTriggerCellImpl::SuperTriggerCell::getSumHwPt(), and vfeCompression_.

Referenced by assignSuperTriggerCellEnergyAndPosition(), and HGCalConcentratorSuperTriggerCellImpl::SuperTriggerCell::size().

29  {
30  uint32_t code(0);
31  uint32_t compressed_value(0);
32  vfeCompression_.compressSingle(stc.getSumHwPt(), code, compressed_value);
33  return compressed_value;
34 }
void compressSingle(const uint32_t value, uint32_t &compressedCode, uint32_t &compressedValue) const
float HGCalConcentratorSuperTriggerCellImpl::getTriggerCellOneBitFraction ( float  tcPt,
float  sumPt 
) const
private
void HGCalConcentratorSuperTriggerCellImpl::select ( const std::vector< l1t::HGCalTriggerCell > &  trigCellVecInput,
std::vector< l1t::HGCalTriggerCell > &  trigCellVecOutput 
)

Definition at line 161 of file HGCalConcentratorSuperTriggerCellImpl.cc.

References createAllTriggerCells(), HGCalCoarseTriggerCellMapping::getCoarseTriggerCellId(), and superTCmapping_.

162  {
163  std::unordered_map<unsigned, SuperTriggerCell> STCs;
164  // first pass, fill the "coarse" trigger cells
165  for (const l1t::HGCalTriggerCell& tc : trigCellVecInput) {
166  uint32_t stcid = superTCmapping_.getCoarseTriggerCellId(tc.detId());
167  STCs[stcid].add(tc, stcid);
168  }
169 
170  createAllTriggerCells(STCs, trigCellVecOutput);
171 }
uint32_t getCoarseTriggerCellId(uint32_t detid) const
void createAllTriggerCells(std::unordered_map< unsigned, SuperTriggerCell > &STCs, std::vector< l1t::HGCalTriggerCell > &trigCellVecOutput) const

Member Data Documentation

HGCalTriggerCellCalibration HGCalConcentratorSuperTriggerCellImpl::calibration_
private
bool HGCalConcentratorSuperTriggerCellImpl::coarsenTriggerCells_
private
HGCalCoarseTriggerCellMapping HGCalConcentratorSuperTriggerCellImpl::coarseTCmapping_
private
EnergyDivisionType HGCalConcentratorSuperTriggerCellImpl::energyDivisionType_
private
bool HGCalConcentratorSuperTriggerCellImpl::fixedDataSizePerHGCROC_
private
int HGCalConcentratorSuperTriggerCellImpl::kHighDensityThickness_ = 0
staticprivate
int HGCalConcentratorSuperTriggerCellImpl::kOddNumberMask_ = 1
staticprivate

Definition at line 34 of file HGCalConcentratorSuperTriggerCellImpl.h.

int HGCalConcentratorSuperTriggerCellImpl::kTriggerCellsForDivision_ = 4
staticprivate
double HGCalConcentratorSuperTriggerCellImpl::oneBitFractionHighValue_
private
double HGCalConcentratorSuperTriggerCellImpl::oneBitFractionLowValue_
private
double HGCalConcentratorSuperTriggerCellImpl::oneBitFractionThreshold_
private
HGCalCoarseTriggerCellMapping HGCalConcentratorSuperTriggerCellImpl::superTCmapping_
private
HGCalTriggerTools HGCalConcentratorSuperTriggerCellImpl::triggerTools_
private
HGCalVFECompressionImpl HGCalConcentratorSuperTriggerCellImpl::vfeCompression_
private

Definition at line 51 of file HGCalConcentratorSuperTriggerCellImpl.h.

Referenced by getCompressedSTCEnergy().