|
|
Go to the documentation of this file.
20 : theTopology(nullptr),
27 compressionFile_(compressionFile),
28 decompressionFile_(decompressionFile) {}
35 throw cms::Exception(
"CaloTPGTranscoderULUT") <<
"Topology not set! Use CaloTPGTranscoderULUT::setup(...) first!";
38 std::array<unsigned int, OUTPUT_LUT_SIZE> analyticalLUT;
39 std::array<unsigned int, OUTPUT_LUT_SIZE> linearQIE8LUT;
40 std::array<unsigned int, OUTPUT_LUT_SIZE> linearQIE11LUT;
41 std::array<unsigned int, OUTPUT_LUT_SIZE> linearRctLUT;
42 std::array<unsigned int, OUTPUT_LUT_SIZE> linearNctLUT;
46 analyticalLUT[
i] =
min(static_cast<unsigned int>(
sqrt(14.94 *
log(1. +
i / 14.94) *
i) + 0.5),
TPGMAX - 1);
55 for (std::vector<DetId>::iterator
i = allChannels.begin();
i != allChannels.end(); ++
i) {
94 double eta_low = 0., eta_high = 0.;
96 double cosh_ieta = fabs(cosh((eta_low + eta_high) / 2.));
103 for (
unsigned int i = 0;
i < lutsize; ++
i) {
113 for (
unsigned int i = 0;
i < lutsize; ++
i) {
115 unsigned int mid = (
low +
i) / 2;
126 for (
unsigned int i = 0;
i < lutsize; ++
i) {
138 int fineGrain)
const {
143 <<
sample <<
" was requested.";
146 throw cms::Exception(
"Out of Range") <<
"No decompression LUT found for " <<
id;
154 const int& compET)
const {
158 edm::LogError(
"CaloTPGTranscoderULUT") <<
"No decompression LUT found for ieta, iphi = " <<
ieta <<
", " <<
iphi;
159 }
else if (compET < 0 || compET >= (
int)
TPGMAX) {
161 <<
"Compressed value out of range: eta, phi, cET = " <<
ieta <<
", " <<
iphi <<
", " << compET;
177 bool fineGrain)
const {
178 throw cms::Exception(
"Not Implemented") <<
"CaloTPGTranscoderULUT::ecalCompress";
187 bool& activity)
const {
188 throw cms::Exception(
"Not Implemented") <<
"CaloTPGTranscoderULUT::rctEGammaUncompress";
194 unsigned int&
et)
const {
195 throw cms::Exception(
"Not Implemented") <<
"CaloTPGTranscoderULUT::rctJetUncompress";
202 throw cms::Exception(
"CaloTPGTranscoderULUT") <<
"Topology not set! Use CaloTPGTranscoderULUT::setup(...) first!";
209 throw cms::Exception(
"CaloTPGTranscoderULUT") <<
"Topology not set! Use CaloTPGTranscoderULUT::setup(...) first!";
216 throw cms::Exception(
"CaloTPGTranscoderULUT") <<
"Topology not set! Use CaloTPGTranscoderULUT::setup(...) first!";
225 throw cms::Exception(
"CaloTPGTranscoderULUT") <<
"Topology not set! Use CaloTPGTranscoderULUT::setup(...) first!";
257 throw cms::Exception(
"CaloTPGTranscoderULUT") <<
"Unknown trigger mode used by the topology!";
263 throw cms::Exception(
"CaloTPGTranscoderULUT") <<
"Topology not set! Use CaloTPGTranscoderULUT::setup(...) first!";
278 throw cms::Exception(
"CaloTPGTranscoderULUT") <<
"Unknown trigger mode used by the topology!";
285 std::vector<unsigned int>
result(lut.begin(), lut.end());
317 for (
const auto&
tower : theTrigTowerGeometry.
towerIds(cell))
324 throw cms::Exception(
"Not Implemented") <<
"setup of CaloTPGTranscoderULUT from text files";
bool isPlan1(const HcalDetId &id) const
static const unsigned int QIE10_OUTPUT_LUT_SIZE
static const unsigned int TPGMAX
std::vector< HcalTrigTowerDetId > towerIds(const HcalDetId &cellId) const
the mapping to and from DetIds
std::set< HcalDetId > plan1_towers_
virtual const std::vector< unsigned int > getCompressionLUT(const HcalTrigTowerDetId &id) const
unsigned int getHTSize() const
HcalTriggerPrimitiveSample hcalCompress(const HcalTrigTowerDetId &id, unsigned int sample, int fineGrain) const override
Compression from linear samples+fine grain in the HTR.
std::vector< RCTdecompression > hcaluncomp_
const Item * getValues(DetId fId, bool throwOnFail=true) const
bool isHcalZDCDetId() const
const std::string decompressionFile_
int compressedEt() const
get the encoded/compressed Et
std::vector< std::vector< LUT > > outputLUT_
unsigned int detId2denseIdHT(const DetId &id) const
return a linear packed id from HT
virtual bool HTvalid(const int ieta, const int iphi, const int version) const
CaloTPGTranscoderULUT(const std::string &compressionFile="", const std::string &decompressionFile="")
virtual void setup(HcalLutMetadata const &, HcalTrigTowerGeometry const &, int nctScaleShift, int rctScaleShift, double lsbQIE8, double lsbQIE11, bool allLinear)
bool validHT(const HcalTrigTowerDetId &id) const
bool isHcalTrigTowerDetId() const
virtual int getOutputLUTId(const HcalTrigTowerDetId &id) const
static const unsigned int OUTPUT_LUT_SIZE
std::vector< DetId > getAllChannels() const
const HcalDDDRecConstants * dddConstants() const
const HcalTopology * topo() const
HcalTopologyMode::TriggerMode triggerMode() const
int firstHFTower(int version) const
void loadHCALCompress(HcalLutMetadata const &, HcalTrigTowerGeometry const &)
static const unsigned int QIE8_OUTPUT_LUT_SIZE
bool isHcalCastorDetId() const
static const unsigned int QIE11_OUTPUT_LUT_SIZE
bool valid(const DetId &id) const override
EcalTriggerPrimitiveSample ecalCompress(const EcalTrigTowerDetId &id, unsigned int sample, bool fineGrain) const override
Compression from linear samples+fine grain in the ECAL.
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.
const std::string compressionFile_
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.
unsigned int getOutputLUTSize(const HcalTrigTowerDetId &id) const
Abs< T >::type abs(const T &t)
const HcalTopology * theTopology
double hcaletValue(const int &ieta, const int &iphi, const int &version, const int &compressedValue) const override
void towerEtaBounds(int ieta, int version, double &eta1, double &eta2) const
where this tower begins and ends in eta
~CaloTPGTranscoderULUT() override
bool isOnlyQIE11(const HcalTrigTowerDetId &id) const