CMS 3D CMS Logo

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

#include <CaloTPGTranscoderULUT.h>

Inheritance diagram for CaloTPGTranscoderULUT:
CaloTPGTranscoder

Public Member Functions

 CaloTPGTranscoderULUT (const std::string &compressionFile="", const std::string &decompressionFile="")
 
virtual EcalTriggerPrimitiveSample ecalCompress (const EcalTrigTowerDetId &id, unsigned int sample, bool fineGrain) const override
 Compression from linear samples+fine grain in the ECAL. More...
 
virtual const std::vector< unsigned int > getCompressionLUT (const HcalTrigTowerDetId &id) const
 
virtual int getOutputLUTId (const HcalTrigTowerDetId &id) const
 
virtual int getOutputLUTId (const int ieta, const int iphi, const int version) const
 
virtual HcalTriggerPrimitiveSample hcalCompress (const HcalTrigTowerDetId &id, unsigned int sample, int fineGrain) const override
 Compression from linear samples+fine grain in the HTR. More...
 
virtual double hcaletValue (const int &ieta, const int &iphi, const int &version, const int &compressedValue) const override
 
virtual double hcaletValue (const HcalTrigTowerDetId &hid, const HcalTriggerPrimitiveSample &hc) const override
 
virtual bool HTvalid (const int ieta, const int iphi, const int version) const
 
virtual void rctEGammaUncompress (const HcalTrigTowerDetId &hid, const HcalTriggerPrimitiveSample &hc, const EcalTrigTowerDetId &eid, const EcalTriggerPrimitiveSample &ec, unsigned int &et, bool &egVecto, bool &activity) const override
 Uncompression for the Electron/Photon path in the RCT. More...
 
virtual void rctJetUncompress (const HcalTrigTowerDetId &hid, const HcalTriggerPrimitiveSample &hc, const EcalTrigTowerDetId &eid, const EcalTriggerPrimitiveSample &ec, unsigned int &et) const override
 Uncompression for the JET path in the RCT. More...
 
virtual void setup (HcalLutMetadata const &, HcalTrigTowerGeometry const &, int, int)
 
virtual ~CaloTPGTranscoderULUT ()
 
- Public Member Functions inherited from CaloTPGTranscoder
 CaloTPGTranscoder ()
 
boost::shared_ptr< const EcalTPGCompressorgetEcalCompressor () const
 
boost::shared_ptr< const HcalTPGCompressorgetHcalCompressor () const
 
virtual ~CaloTPGTranscoder ()
 

Private Types

typedef unsigned int LUT
 
typedef std::array< double, TPGMAXRCTdecompression
 

Private Member Functions

unsigned int getOutputLUTSize (const HcalTrigTowerDetId &id) const
 
void loadHCALCompress (HcalLutMetadata const &, HcalTrigTowerGeometry const &)
 

Private Attributes

std::string compressionFile_
 
std::string decompressionFile_
 
std::vector< RCTdecompressionhcaluncomp_
 
std::vector< int > ietah
 
std::vector< int > ietal
 
double lsb_factor_
 
std::vector< int > LUTfactor
 
double nct_factor_
 
double nominal_gain_
 
std::vector< std::array< LUT, OUTPUT_LUT_SIZE > > outputLUT_
 
std::set< HcalDetIdplan1_towers_
 
double rct_factor_
 
const HcalTopologytheTopology
 
std::vector< int > ZS
 

Static Private Attributes

static const bool newHFphi = true
 
static const int NOUTLUTS = 4176
 
static const unsigned int OUTPUT_LUT_SIZE = std::max({QIE8_OUTPUT_LUT_SIZE, QIE10_OUTPUT_LUT_SIZE, QIE11_OUTPUT_LUT_SIZE})
 
static const unsigned int QIE10_OUTPUT_LUT_SIZE = REDUCE10BIT
 
static const unsigned int QIE11_OUTPUT_LUT_SIZE = REDUCE11BIT
 
static const unsigned int QIE8_OUTPUT_LUT_SIZE = REDUCE10BIT
 
static const unsigned int REDUCE10BIT = 1024
 
static const unsigned int REDUCE11BIT = 2048
 
static const unsigned int TPGMAX = 256
 

Additional Inherited Members

- Public Types inherited from CaloTPGTranscoder
enum  Mode { All =0, RCT =1, HcalTPG =2, EcalTPG =3 }
 

Detailed Description

Author
J. Mans - Minnesota

Definition at line 19 of file CaloTPGTranscoderULUT.h.

Member Typedef Documentation

typedef unsigned int CaloTPGTranscoderULUT::LUT
private

Definition at line 57 of file CaloTPGTranscoderULUT.h.

typedef std::array<double, TPGMAX> CaloTPGTranscoderULUT::RCTdecompression
private

Definition at line 58 of file CaloTPGTranscoderULUT.h.

Constructor & Destructor Documentation

CaloTPGTranscoderULUT::CaloTPGTranscoderULUT ( const std::string &  compressionFile = "",
const std::string &  decompressionFile = "" 
)

Definition at line 19 of file CaloTPGTranscoderULUT.cc.

21  : theTopology(0),
23  compressionFile_(compressionFile),
24  decompressionFile_(decompressionFile)
25 {
26 }
const HcalTopology * theTopology
CaloTPGTranscoderULUT::~CaloTPGTranscoderULUT ( )
virtual

Definition at line 28 of file CaloTPGTranscoderULUT.cc.

28  {
29 }

Member Function Documentation

EcalTriggerPrimitiveSample CaloTPGTranscoderULUT::ecalCompress ( const EcalTrigTowerDetId id,
unsigned int  sample,
bool  fineGrain 
) const
overridevirtual

Compression from linear samples+fine grain in the ECAL.

Implements CaloTPGTranscoder.

Definition at line 155 of file CaloTPGTranscoderULUT.cc.

References Exception.

155  {
156  throw cms::Exception("Not Implemented") << "CaloTPGTranscoderULUT::ecalCompress";
157 }
const std::vector< unsigned int > CaloTPGTranscoderULUT::getCompressionLUT ( const HcalTrigTowerDetId id) const
virtual

Definition at line 237 of file CaloTPGTranscoderULUT.cc.

References getOutputLUTId(), lumiPlot::lut, outputLUT_, and mps_fire::result.

Referenced by HcalLutManager::getCompressionLutXmlFromCoder().

237  {
238  int itower = getOutputLUTId(id);
239  auto lut = outputLUT_[itower];
240  std::vector<unsigned int> result(lut.begin(), lut.end());
241  return result;
242 }
std::vector< std::array< LUT, OUTPUT_LUT_SIZE > > outputLUT_
virtual int getOutputLUTId(const HcalTrigTowerDetId &id) const
int CaloTPGTranscoderULUT::getOutputLUTId ( const HcalTrigTowerDetId id) const
virtual

Definition at line 179 of file CaloTPGTranscoderULUT.cc.

References HcalTopology::detId2denseIdHT(), Exception, and theTopology.

Referenced by getCompressionLUT(), hcalCompress(), hcaletValue(), loadHCALCompress(), and L1CaloHcalScaleConfigOnlineProd::newObject().

179  {
180  if (!theTopology) {
181  throw cms::Exception("CaloTPGTranscoderULUT") << "Topology not set! Use CaloTPGTranscoderULUT::setup(...) first!";
182  }
183  return theTopology->detId2denseIdHT(id);
184 }
unsigned int detId2denseIdHT(const DetId &id) const
return a linear packed id from HT
const HcalTopology * theTopology
int CaloTPGTranscoderULUT::getOutputLUTId ( const int  ieta,
const int  iphi,
const int  version 
) const
virtual

Definition at line 186 of file CaloTPGTranscoderULUT.cc.

References HcalTopology::detId2denseIdHT(), Exception, hcalTTPDigis_cfi::id, and theTopology.

186  {
187  if (!theTopology) {
188  throw cms::Exception("CaloTPGTranscoderULUT") << "Topology not set! Use CaloTPGTranscoderULUT::setup(...) first!";
189  }
190  HcalTrigTowerDetId id(ieta, iphiin);
191  id.setVersion(version);
192  return theTopology->detId2denseIdHT(id);
193 }
unsigned int detId2denseIdHT(const DetId &id) const
return a linear packed id from HT
const HcalTopology * theTopology
unsigned int CaloTPGTranscoderULUT::getOutputLUTSize ( const HcalTrigTowerDetId id) const
private

Definition at line 196 of file CaloTPGTranscoderULUT.cc.

References Exception, HcalTopology::lastHBRing(), HcalTopology::lastHERing(), plan1_towers_, QIE10_OUTPUT_LUT_SIZE, QIE11_OUTPUT_LUT_SIZE, QIE8_OUTPUT_LUT_SIZE, theTopology, HcalTopology::triggerMode(), HcalTopologyMode::TriggerMode_2009, HcalTopologyMode::TriggerMode_2016, HcalTopologyMode::TriggerMode_2017, HcalTopologyMode::TriggerMode_2017plan1, HcalTopologyMode::TriggerMode_2018, HcalTopologyMode::TriggerMode_2018legacy, and HcalTopologyMode::TriggerMode_2019.

Referenced by hcalCompress(), and loadHCALCompress().

197 {
198  if (!theTopology)
199  throw cms::Exception("CaloTPGTranscoderULUT")
200  << "Topology not set! Use CaloTPGTranscoderULUT::setup(...) first!";
201 
202  switch (theTopology->triggerMode()) {
205  return QIE8_OUTPUT_LUT_SIZE;
207  if (id.ietaAbs() <= theTopology->lastHERing())
208  return QIE8_OUTPUT_LUT_SIZE;
209  else
210  return QIE10_OUTPUT_LUT_SIZE;
212  if (plan1_towers_.find(id) != plan1_towers_.end())
213  return QIE11_OUTPUT_LUT_SIZE;
214  else if (id.ietaAbs() <= theTopology->lastHERing())
215  return QIE8_OUTPUT_LUT_SIZE;
216  else
217  return QIE10_OUTPUT_LUT_SIZE;
220  if (id.ietaAbs() <= theTopology->lastHBRing())
221  return QIE8_OUTPUT_LUT_SIZE;
222  else if (id.ietaAbs() <= theTopology->lastHERing())
223  return QIE11_OUTPUT_LUT_SIZE;
224  else
225  return QIE10_OUTPUT_LUT_SIZE;
227  if (id.ietaAbs() <= theTopology->lastHERing())
228  return QIE11_OUTPUT_LUT_SIZE;
229  else
230  return QIE10_OUTPUT_LUT_SIZE;
231  default:
232  throw cms::Exception("CaloTPGTranscoderULUT")
233  << "Unknown trigger mode used by the topology!";
234  }
235 }
std::set< HcalDetId > plan1_towers_
static const unsigned int QIE8_OUTPUT_LUT_SIZE
int lastHBRing() const
Definition: HcalTopology.h:88
HcalTopologyMode::TriggerMode triggerMode() const
Definition: HcalTopology.h:32
const HcalTopology * theTopology
static const unsigned int QIE10_OUTPUT_LUT_SIZE
static const unsigned int QIE11_OUTPUT_LUT_SIZE
int lastHERing() const
Definition: HcalTopology.h:90
HcalTriggerPrimitiveSample CaloTPGTranscoderULUT::hcalCompress ( const HcalTrigTowerDetId id,
unsigned int  sample,
int  fineGrain 
) const
overridevirtual

Compression from linear samples+fine grain in the HTR.

Implements CaloTPGTranscoder.

Definition at line 122 of file CaloTPGTranscoderULUT.cc.

References Exception, getOutputLUTId(), getOutputLUTSize(), hcalTTPDigis_cfi::id, and outputLUT_.

122  {
123  unsigned int itower = getOutputLUTId(id);
124 
125  if (sample >= getOutputLUTSize(id))
126  throw cms::Exception("Out of Range")
127  << "LUT has " << getOutputLUTSize(id) << " entries for " << id << " but " << sample << " was requested.";
128 
129  if(itower >= outputLUT_.size())
130  throw cms::Exception("Out of Range") << "No decompression LUT found for " << id;
131 
132  return HcalTriggerPrimitiveSample(outputLUT_[itower][sample], fineGrain);
133 }
std::vector< std::array< LUT, OUTPUT_LUT_SIZE > > outputLUT_
unsigned int getOutputLUTSize(const HcalTrigTowerDetId &id) const
virtual int getOutputLUTId(const HcalTrigTowerDetId &id) const
double CaloTPGTranscoderULUT::hcaletValue ( const int &  ieta,
const int &  iphi,
const int &  version,
const int &  compressedValue 
) const
overridevirtual

Implements CaloTPGTranscoder.

Definition at line 135 of file CaloTPGTranscoderULUT.cc.

References getOutputLUTId(), hcaluncomp_, and TPGMAX.

135  {
136  double etvalue = 0.;
137  int itower = getOutputLUTId(ieta,iphi, version);
138  if (itower < 0) {
139  edm::LogError("CaloTPGTranscoderULUT") << "No decompression LUT found for ieta, iphi = " << ieta << ", " << iphi;
140  } else if (compET < 0 || compET >= (int) TPGMAX) {
141  edm::LogError("CaloTPGTranscoderULUT") << "Compressed value out of range: eta, phi, cET = " << ieta << ", " << iphi << ", " << compET;
142  } else {
143  etvalue = hcaluncomp_[itower][compET];
144  }
145  return(etvalue);
146 }
std::vector< RCTdecompression > hcaluncomp_
virtual int getOutputLUTId(const HcalTrigTowerDetId &id) const
static const unsigned int TPGMAX
double CaloTPGTranscoderULUT::hcaletValue ( const HcalTrigTowerDetId hid,
const HcalTriggerPrimitiveSample hc 
) const
overridevirtual

Implements CaloTPGTranscoder.

Definition at line 148 of file CaloTPGTranscoderULUT.cc.

References HcalTriggerPrimitiveSample::compressedEt(), getOutputLUTId(), and hcaluncomp_.

148  {
149  int compET = hc.compressedEt(); // to be within the range by the class
150  int itower = getOutputLUTId(hid);
151  double etvalue = hcaluncomp_[itower][compET];
152  return etvalue;
153 }
std::vector< RCTdecompression > hcaluncomp_
virtual int getOutputLUTId(const HcalTrigTowerDetId &id) const
int compressedEt() const
get the encoded/compressed Et
bool CaloTPGTranscoderULUT::HTvalid ( const int  ieta,
const int  iphi,
const int  version 
) const
virtual

Definition at line 170 of file CaloTPGTranscoderULUT.cc.

References Exception, hcalTTPDigis_cfi::id, theTopology, and HcalTopology::validHT().

Referenced by HcalLutManager::getCompressionLutXmlFromAsciiMaster(), HcalLutManager::getCompressionLutXmlFromCoder(), and L1CaloHcalScaleConfigOnlineProd::newObject().

170  {
171  HcalTrigTowerDetId id(ieta, iphiin);
172  id.setVersion(version);
173  if (!theTopology) {
174  throw cms::Exception("CaloTPGTranscoderULUT") << "Topology not set! Use CaloTPGTranscoderULUT::setup(...) first!";
175  }
176  return theTopology->validHT(id);
177 }
const HcalTopology * theTopology
bool validHT(const HcalTrigTowerDetId &id) const
void CaloTPGTranscoderULUT::loadHCALCompress ( HcalLutMetadata const &  lutMetadata,
HcalTrigTowerGeometry const &  theTrigTowerGeometry 
)
private

Definition at line 31 of file CaloTPGTranscoderULUT.cc.

References funct::abs(), Exception, HcalTrigTowerGeometry::firstHFTower(), HcalCondObjectContainer< Item >::getAllChannels(), HcalLutMetadatum::getLutGranularity(), getOutputLUTId(), getOutputLUTSize(), HcalLutMetadatum::getOutputLutThreshold(), HcalCondObjectContainer< Item >::getValues(), hcaluncomp_, i, hcalTTPDigis_cfi::id, diffTreeTool::index, createfilelist::int, HcalGenericDetId::isHcalCastorDetId(), HcalGenericDetId::isHcalDetId(), HcalGenericDetId::isHcalTrigTowerDetId(), HcalGenericDetId::isHcalZDCDetId(), cmsBatch::log, lsb_factor_, min(), nct_factor_, nominal_gain_, OUTPUT_LUT_SIZE, outputLUT_, rct_factor_, REDUCE10BIT, mathSSE::sqrt(), theTopology, totemRPUVPatternFinder_cfi::threshold, HcalTrigTowerGeometry::towerEtaBounds(), TPGMAX, HcalTopology::validHT(), and jetIDSelector_cfi::version.

Referenced by setup().

32  {
33  if (!theTopology) {
34  throw cms::Exception("CaloTPGTranscoderULUT") << "Topology not set! Use CaloTPGTranscoderULUT::setup(...) first!";
35  }
36 
37  std::array<unsigned int, OUTPUT_LUT_SIZE> analytical10BITLUT;
38  std::array<unsigned int, OUTPUT_LUT_SIZE> analytical11BITLUT;
39  std::array<unsigned int, OUTPUT_LUT_SIZE> linearRctLUT;
40  std::array<unsigned int, OUTPUT_LUT_SIZE> linearNctLUT;
41 
42  // Compute compression LUT
43  for (unsigned int i=0; i < OUTPUT_LUT_SIZE; i++) {
44  analytical10BITLUT[i] = (unsigned int)(sqrt(14.94*log(1.+i/14.94)*i) + 0.5);
45  analytical11BITLUT[i] = (unsigned int)(sqrt(5.32*log(1.+i/5.32)*i) + 0.5);
46  linearRctLUT[i] = min((unsigned int)(i/rct_factor_), TPGMAX - 1);
47  linearNctLUT[i] = min((unsigned int)(i/nct_factor_), TPGMAX - 1);
48  }
49 
50  std::vector<DetId> allChannels = lutMetadata.getAllChannels();
51 
52  for(std::vector<DetId>::iterator i=allChannels.begin(); i!=allChannels.end(); ++i){
53 
54  if (not HcalGenericDetId(*i).isHcalTrigTowerDetId()) {
55  if ((not HcalGenericDetId(*i).isHcalDetId()) and
56  (not HcalGenericDetId(*i).isHcalZDCDetId()) and
58  edm::LogWarning("CaloTPGTranscoderULUT") << "Encountered invalid HcalDetId " << HcalGenericDetId(*i);
59  continue;
60  }
61 
63  if(!theTopology->validHT(id)) continue;
64 
65  unsigned int index = getOutputLUTId(id);
66 
67  const HcalLutMetadatum *meta = lutMetadata.getValues(id);
68  unsigned int threshold = meta->getOutputLutThreshold();
69 
70  int ieta=id.ieta();
71  int version=id.version();
72  bool isHBHE = (abs(ieta) < theTrigTowerGeometry.firstHFTower(version));
73 
74  unsigned int lutsize = getOutputLUTSize(id);
75 
76  for (unsigned int i = 0; i < threshold; ++i)
77  outputLUT_[index][i] = 0;
78 
79  if (isHBHE and lutsize == REDUCE10BIT) {
80  for (unsigned int i = threshold; i < lutsize; ++i)
81  outputLUT_[index][i] = analytical10BITLUT[i];
82  } else if (isHBHE) {
83  for (unsigned int i = threshold; i < lutsize; ++i)
84  outputLUT_[index][i] = analytical11BITLUT[i];
85  } else {
86  for (unsigned int i = threshold; i < lutsize; ++i)
87  outputLUT_[index][i] = version == 0 ? linearRctLUT[i] : linearNctLUT[i];
88  }
89 
90  double eta_low = 0., eta_high = 0.;
91  theTrigTowerGeometry.towerEtaBounds(ieta,version,eta_low,eta_high);
92  double cosh_ieta = fabs(cosh((eta_low + eta_high)/2.));
93  double granularity = meta->getLutGranularity();
94 
95  if(isHBHE){
96  double factor = nominal_gain_ / cosh_ieta * granularity;
97  LUT tpg = outputLUT_[index][0];
98  int low = 0;
99  for (unsigned int i = 0; i < getOutputLUTSize(id); ++i){
100  if (outputLUT_[index][i] != tpg){
101  unsigned int mid = (low + i)/2;
102  hcaluncomp_[index][tpg] = (tpg == 0 ? low : factor * mid);
103  low = i;
104  tpg = outputLUT_[index][i];
105  }
106  }
107  hcaluncomp_[index][tpg] = factor * low;
108  }
109  else{
110  LUT tpg = outputLUT_[index][0];
111  hcaluncomp_[index][tpg]=0;
112  for (unsigned int i = 0; i < getOutputLUTSize(id); ++i){
113  if (outputLUT_[index][i] != tpg){
114  tpg = outputLUT_[index][i];
115  hcaluncomp_[index][tpg] = lsb_factor_ * i / (version==0?rct_factor_:nct_factor_);
116  }
117  }
118  }
119  }
120 }
static const unsigned int REDUCE10BIT
int i
Definition: DBlmapReader.cc:9
std::vector< RCTdecompression > hcaluncomp_
std::vector< std::array< LUT, OUTPUT_LUT_SIZE > > outputLUT_
bool isHcalZDCDetId() const
uint8_t getOutputLutThreshold() const
unsigned int getOutputLUTSize(const HcalTrigTowerDetId &id) const
uint8_t getLutGranularity() const
bool isHcalTrigTowerDetId() const
const HcalTopology * theTopology
T sqrt(T t)
Definition: SSEVec.h:18
virtual int getOutputLUTId(const HcalTrigTowerDetId &id) const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const unsigned int OUTPUT_LUT_SIZE
T min(T a, T b)
Definition: MathUtil.h:58
bool isHcalDetId() const
static const unsigned int TPGMAX
bool isHcalCastorDetId() const
std::vector< unsigned short int > LUT
Definition: DTTracoLUTs.h:32
bool validHT(const HcalTrigTowerDetId &id) const
void CaloTPGTranscoderULUT::rctEGammaUncompress ( const HcalTrigTowerDetId hid,
const HcalTriggerPrimitiveSample hc,
const EcalTrigTowerDetId eid,
const EcalTriggerPrimitiveSample ec,
unsigned int &  et,
bool &  egVeto,
bool &  activity 
) const
overridevirtual

Uncompression for the Electron/Photon path in the RCT.

Implements CaloTPGTranscoder.

Definition at line 159 of file CaloTPGTranscoderULUT.cc.

References Exception.

161  {
162  throw cms::Exception("Not Implemented") << "CaloTPGTranscoderULUT::rctEGammaUncompress";
163 }
void CaloTPGTranscoderULUT::rctJetUncompress ( const HcalTrigTowerDetId hid,
const HcalTriggerPrimitiveSample hc,
const EcalTrigTowerDetId eid,
const EcalTriggerPrimitiveSample ec,
unsigned int &  et 
) const
overridevirtual

Uncompression for the JET path in the RCT.

Implements CaloTPGTranscoder.

Definition at line 164 of file CaloTPGTranscoderULUT.cc.

References Exception.

166  {
167  throw cms::Exception("Not Implemented") << "CaloTPGTranscoderULUT::rctJetUncompress";
168 }
void CaloTPGTranscoderULUT::setup ( HcalLutMetadata const &  lutMetadata,
HcalTrigTowerGeometry const &  theTrigTowerGeometry,
int  nctScaleShift,
int  rctScaleShift 
)
virtual

Definition at line 244 of file CaloTPGTranscoderULUT.cc.

References compressionFile_, HcalTopology::dddConstants(), decompressionFile_, Exception, HcalCondObjectContainer< Item >::getAllChannels(), HcalTopology::getHTSize(), HcalLutMetadata::getNominalGain(), HcalLutMetadata::getRctLsb(), DetId::Hcal, hcaluncomp_, HcalDDDRecConstants::isPlan1(), loadHCALCompress(), HcaluLUTTPGCoder::lsb_, lsb_factor_, nct_factor_, nominal_gain_, outputLUT_, plan1_towers_, rct_factor_, theTopology, HcalCondObjectContainerBase::topo(), HcalTrigTowerGeometry::towerIds(), and HcalTopology::valid().

Referenced by o2olib.O2OTool::execute().

245 {
246  theTopology = lutMetadata.topo();
247  nominal_gain_ = lutMetadata.getNominalGain();
248  lsb_factor_ = lutMetadata.getRctLsb();
249 
250  rct_factor_ = lsb_factor_/(HcaluLUTTPGCoder::lsb_*(1<<rctScaleShift));
251  nct_factor_ = lsb_factor_/(HcaluLUTTPGCoder::lsb_*(1<<nctScaleShift));
252 
253  outputLUT_.resize(theTopology->getHTSize());
254  hcaluncomp_.resize(theTopology->getHTSize());
255 
256  plan1_towers_.clear();
257  for (const auto& id: lutMetadata.getAllChannels()) {
258  if (not (id.det() == DetId::Hcal and theTopology->valid(id)))
259  continue;
260  HcalDetId cell(id);
261  if (not theTopology->dddConstants()->isPlan1(cell))
262  continue;
263  for (const auto& tower: theTrigTowerGeometry.towerIds(cell))
264  plan1_towers_.emplace(tower);
265  }
266 
267  if (compressionFile_.empty() && decompressionFile_.empty()) {
268  loadHCALCompress(lutMetadata,theTrigTowerGeometry);
269  }
270  else {
271  throw cms::Exception("Not Implemented") << "setup of CaloTPGTranscoderULUT from text files";
272  }
273 }
const HcalDDDRecConstants * dddConstants() const
Definition: HcalTopology.h:161
std::vector< RCTdecompression > hcaluncomp_
std::vector< std::array< LUT, OUTPUT_LUT_SIZE > > outputLUT_
std::set< HcalDetId > plan1_towers_
static const float lsb_
const HcalTopology * theTopology
unsigned int getHTSize() const
Definition: HcalTopology.h:136
void loadHCALCompress(HcalLutMetadata const &, HcalTrigTowerGeometry const &)
virtual bool valid(const DetId &id) const
bool isPlan1(const HcalDetId &id) const

Member Data Documentation

std::string CaloTPGTranscoderULUT::compressionFile_
private

Definition at line 72 of file CaloTPGTranscoderULUT.h.

Referenced by setup().

std::string CaloTPGTranscoderULUT::decompressionFile_
private

Definition at line 73 of file CaloTPGTranscoderULUT.h.

Referenced by setup().

std::vector<RCTdecompression> CaloTPGTranscoderULUT::hcaluncomp_
private

Definition at line 80 of file CaloTPGTranscoderULUT.h.

Referenced by hcaletValue(), loadHCALCompress(), and setup().

std::vector<int> CaloTPGTranscoderULUT::ietah
private

Definition at line 75 of file CaloTPGTranscoderULUT.h.

std::vector<int> CaloTPGTranscoderULUT::ietal
private

Definition at line 74 of file CaloTPGTranscoderULUT.h.

double CaloTPGTranscoderULUT::lsb_factor_
private

Definition at line 69 of file CaloTPGTranscoderULUT.h.

Referenced by loadHCALCompress(), and setup().

std::vector<int> CaloTPGTranscoderULUT::LUTfactor
private

Definition at line 77 of file CaloTPGTranscoderULUT.h.

double CaloTPGTranscoderULUT::nct_factor_
private

Definition at line 71 of file CaloTPGTranscoderULUT.h.

Referenced by loadHCALCompress(), and setup().

const bool CaloTPGTranscoderULUT::newHFphi = true
staticprivate

Definition at line 61 of file CaloTPGTranscoderULUT.h.

double CaloTPGTranscoderULUT::nominal_gain_
private

Definition at line 68 of file CaloTPGTranscoderULUT.h.

Referenced by loadHCALCompress(), and setup().

const int CaloTPGTranscoderULUT::NOUTLUTS = 4176
staticprivate

Definition at line 43 of file CaloTPGTranscoderULUT.h.

const unsigned int CaloTPGTranscoderULUT::OUTPUT_LUT_SIZE = std::max({QIE8_OUTPUT_LUT_SIZE, QIE10_OUTPUT_LUT_SIZE, QIE11_OUTPUT_LUT_SIZE})
staticprivate

Definition at line 53 of file CaloTPGTranscoderULUT.h.

Referenced by loadHCALCompress().

std::vector<std::array<LUT, OUTPUT_LUT_SIZE> > CaloTPGTranscoderULUT::outputLUT_
private

Definition at line 79 of file CaloTPGTranscoderULUT.h.

Referenced by getCompressionLUT(), hcalCompress(), loadHCALCompress(), and setup().

std::set<HcalDetId> CaloTPGTranscoderULUT::plan1_towers_
private

Definition at line 82 of file CaloTPGTranscoderULUT.h.

Referenced by getOutputLUTSize(), and setup().

const unsigned int CaloTPGTranscoderULUT::QIE10_OUTPUT_LUT_SIZE = REDUCE10BIT
staticprivate

Definition at line 51 of file CaloTPGTranscoderULUT.h.

Referenced by getOutputLUTSize().

const unsigned int CaloTPGTranscoderULUT::QIE11_OUTPUT_LUT_SIZE = REDUCE11BIT
staticprivate

Definition at line 52 of file CaloTPGTranscoderULUT.h.

Referenced by getOutputLUTSize().

const unsigned int CaloTPGTranscoderULUT::QIE8_OUTPUT_LUT_SIZE = REDUCE10BIT
staticprivate

Definition at line 50 of file CaloTPGTranscoderULUT.h.

Referenced by getOutputLUTSize().

double CaloTPGTranscoderULUT::rct_factor_
private

Definition at line 70 of file CaloTPGTranscoderULUT.h.

Referenced by loadHCALCompress(), and setup().

const unsigned int CaloTPGTranscoderULUT::REDUCE10BIT = 1024
staticprivate

Definition at line 46 of file CaloTPGTranscoderULUT.h.

Referenced by loadHCALCompress().

const unsigned int CaloTPGTranscoderULUT::REDUCE11BIT = 2048
staticprivate

Definition at line 47 of file CaloTPGTranscoderULUT.h.

const HcalTopology* CaloTPGTranscoderULUT::theTopology
private
const unsigned int CaloTPGTranscoderULUT::TPGMAX = 256
staticprivate

Definition at line 54 of file CaloTPGTranscoderULUT.h.

Referenced by hcaletValue(), and loadHCALCompress().

std::vector<int> CaloTPGTranscoderULUT::ZS
private

Definition at line 76 of file CaloTPGTranscoderULUT.h.