CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
HcalLuttoDB Class Reference

#include <CalibCalorimetry/HcalLuttoDB/src/HcalLuttoDB.cc>

Inheritance diagram for HcalLuttoDB:
edm::one::EDAnalyzer<> edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob () override
 
void endJob () override
 
 HcalLuttoDB (const edm::ParameterSet &)
 
 ~HcalLuttoDB () override
 
- Public Member Functions inherited from edm::one::EDAnalyzer<>
 EDAnalyzer ()=default
 
 EDAnalyzer (const EDAnalyzer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
const EDAnalyzeroperator= (const EDAnalyzer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESResolverIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESResolverIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

std::vector< unsigned char > extractOutputLut (const CaloTPGTranscoder &coder, HcalTrigTowerDetId chan)
 
std::ostream * openChecksums ()
 
std::ostream * openPerCrate (int crate)
 
std::ostream * openPerLut1 (HcalElectronicsId eid)
 
std::ostream * openPerLut2 (HcalElectronicsId eid)
 
void writeoutlut1 (HcalDetId id, HcalElectronicsId eid, const std::vector< unsigned short > &lut, std::ostream &os)
 
void writeoutlut2 (HcalTrigTowerDetId id, HcalElectronicsId eid, const std::vector< unsigned char > &lut, std::ostream &os)
 

Private Attributes

std::string creationstamp_
 
const std::string creationtag_
 
const std::string fileformat_
 
const bool filePerCrate_
 
std::ostream * oc_
 
const std::string targetfirmware_
 
edm::ESGetToken< CaloTPGTranscoder, CaloTPGRecordtokcaloCode_
 
edm::ESGetToken< HcalDbService, HcalDbRecordtokdb_
 
edm::ESGetToken< HcalTPGCoder, HcalTPGRecordtokhcalCode_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Description: <one line="" class="" summary>=""> R Implementation: <Notes on="" implementation>="">

Definition at line 54 of file HcalLuttoDB.cc.

Constructor & Destructor Documentation

◆ HcalLuttoDB()

HcalLuttoDB::HcalLuttoDB ( const edm::ParameterSet iConfig)
explicit

Definition at line 90 of file HcalLuttoDB.cc.

References tokcaloCode_, tokdb_, and tokhcalCode_.

91  : creationtag_(iConfig.getParameter<std::string>("creationtag")),
92  targetfirmware_(iConfig.getParameter<std::string>("targetfirmware")),
93  filePerCrate_(iConfig.getUntrackedParameter<bool>("filePerCrate", true)),
94  fileformat_(iConfig.getParameter<std::string>("filePrefix")) {
95  tokdb_ = esConsumes<HcalDbService, HcalDbRecord>();
96  tokhcalCode_ = esConsumes<HcalTPGCoder, HcalTPGRecord>();
97  tokcaloCode_ = esConsumes<CaloTPGTranscoder, CaloTPGRecord>();
98 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
const bool filePerCrate_
Definition: HcalLuttoDB.cc:72
edm::ESGetToken< CaloTPGTranscoder, CaloTPGRecord > tokcaloCode_
Definition: HcalLuttoDB.cc:81
edm::ESGetToken< HcalTPGCoder, HcalTPGRecord > tokhcalCode_
Definition: HcalLuttoDB.cc:80
const std::string targetfirmware_
Definition: HcalLuttoDB.cc:71
T getUntrackedParameter(std::string const &, T const &) const
const std::string fileformat_
Definition: HcalLuttoDB.cc:73
edm::ESGetToken< HcalDbService, HcalDbRecord > tokdb_
Definition: HcalLuttoDB.cc:79
const std::string creationtag_
Definition: HcalLuttoDB.cc:70

◆ ~HcalLuttoDB()

HcalLuttoDB::~HcalLuttoDB ( )
override

Definition at line 100 of file HcalLuttoDB.cc.

100 {}

Member Function Documentation

◆ analyze()

void HcalLuttoDB::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overridevirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 270 of file HcalLuttoDB.cc.

References HcalElectronicsMap::allElectronicsId(), CaloTPGTranscoder_cfi::CaloTPGTranscoder, extractOutputLut(), filePerCrate_, HcalGenericDetId::genericSubdet(), edm::EventSetup::getData(), HcalDbService::getHcalMapping(), HcalTPGCoder::getLinearizationLUT(), HcalGenericDetId::HcalGenBarrel, HcalGenericDetId::HcalGenEndcap, HcalGenericDetId::HcalGenForward, HcalElectronicsMap::lookup(), HcalElectronicsMap::lookupTrigger(), DetId::null(), oc_, openChecksums(), openPerCrate(), openPerLut1(), openPerLut2(), tokcaloCode_, tokdb_, tokhcalCode_, writeoutlut1(), and writeoutlut2().

270  {
271  //using namespace edm;
272  //using namespace std;
273 
274  edm::LogInfo("Hcal") << "Beginning dump of Hcal TPG LUTS (this may take a minute or two)";
275 
276  const HcalElectronicsMap* Map_;
277  const HcalDbService* pSetup = &iSetup.getData(tokdb_);
278  Map_ = pSetup->getHcalMapping();
279  // get the conditions, for the decoding
280  const HcalTPGCoder* inputCoder = &iSetup.getData(tokhcalCode_);
281  const CaloTPGTranscoder* outTranscoder = &iSetup.getData(tokcaloCode_);
282 
283  std::vector<HcalElectronicsId> allEID = Map_->allElectronicsId();
284  std::vector<HcalElectronicsId>::iterator itreid;
285 
286  std::ostream* pfile = nullptr;
287  oc_ = openChecksums();
288 
289  for (int crate = 0; crate < 20; crate++) {
290  edm::LogInfo("Hcal") << "Beginning crate " << crate;
291  for (itreid = allEID.begin(); itreid != allEID.end(); ++itreid) {
292  if (itreid->readoutVMECrateId() != crate)
293  continue;
294  if (itreid->isTriggerChainId()) { // lut2
295  HcalTrigTowerDetId tid = Map_->lookupTrigger(*itreid);
296  if (tid.null())
297  continue;
298 
299  if (filePerCrate_ && pfile == nullptr)
300  pfile = openPerCrate(crate);
301  else if (pfile == nullptr)
302  pfile = openPerLut2(*itreid);
303 
304  std::vector<unsigned char> lut = extractOutputLut(*outTranscoder, tid);
305  writeoutlut2(tid, *itreid, lut, *pfile);
306  if (!filePerCrate_) {
307  delete pfile;
308  pfile = nullptr;
309  }
310  } else { // lut1
311  HcalGenericDetId gid = Map_->lookup(*itreid);
312  if (gid.null() || !(gid.genericSubdet() == HcalGenericDetId::HcalGenBarrel ||
315  continue;
316 
317  if (filePerCrate_ && pfile == nullptr)
318  pfile = openPerCrate(crate);
319  else if (pfile == nullptr)
320  pfile = openPerLut1(*itreid);
321 
322  std::vector<unsigned short> lut = inputCoder->getLinearizationLUT(HcalDetId(gid));
323  writeoutlut1(HcalDetId(gid), *itreid, lut, *pfile);
324  if (!filePerCrate_) {
325  delete pfile;
326  pfile = nullptr;
327  }
328  }
329  }
330  if (pfile != nullptr) {
331  if (filePerCrate_)
332  *pfile << "</CFGBrickSet>\n";
333  delete pfile;
334  pfile = nullptr;
335  }
336  }
337  *oc_ << "</CFGBrick>\n";
338  delete oc_;
339 }
const bool filePerCrate_
Definition: HcalLuttoDB.cc:72
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
std::ostream * openPerLut2(HcalElectronicsId eid)
Definition: HcalLuttoDB.cc:138
edm::ESGetToken< CaloTPGTranscoder, CaloTPGRecord > tokcaloCode_
Definition: HcalLuttoDB.cc:81
edm::ESGetToken< HcalTPGCoder, HcalTPGRecord > tokhcalCode_
Definition: HcalLuttoDB.cc:80
const DetId lookup(HcalElectronicsId fId) const
lookup the logical detid associated with the given electronics id
std::ostream * openChecksums()
Definition: HcalLuttoDB.cc:106
const HcalElectronicsMap * getHcalMapping() const
void writeoutlut2(HcalTrigTowerDetId id, HcalElectronicsId eid, const std::vector< unsigned char > &lut, std::ostream &os)
Definition: HcalLuttoDB.cc:210
virtual std::vector< unsigned short > getLinearizationLUT(HcalDetId id) const
Get the full linearization LUT (128 elements). Default implementation just uses adc2Linear to get all...
Definition: HcalTPGCoder.cc:3
constexpr bool null() const
is this a null id ?
Definition: DetId.h:59
std::ostream * oc_
Definition: HcalLuttoDB.cc:82
std::vector< HcalElectronicsId > allElectronicsId() const
std::ostream * openPerCrate(int crate)
Definition: HcalLuttoDB.cc:114
HcalGenericSubdetector genericSubdet() const
Log< level::Info, false > LogInfo
edm::ESGetToken< HcalDbService, HcalDbRecord > tokdb_
Definition: HcalLuttoDB.cc:79
std::ostream * openPerLut1(HcalElectronicsId eid)
Definition: HcalLuttoDB.cc:122
void writeoutlut1(HcalDetId id, HcalElectronicsId eid, const std::vector< unsigned short > &lut, std::ostream &os)
Definition: HcalLuttoDB.cc:154
const DetId lookupTrigger(HcalElectronicsId fId) const
brief lookup the trigger logical detid associated with the given electronics id
std::vector< unsigned char > extractOutputLut(const CaloTPGTranscoder &coder, HcalTrigTowerDetId chan)
Definition: HcalLuttoDB.cc:260

◆ beginJob()

void HcalLuttoDB::beginJob ( )
overridevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 342 of file HcalLuttoDB.cc.

References edmScanValgrind::buffer, creationstamp_, submitPVValidationJobs::now, and hcalRecHitTable_cff::time.

342  {
343  char buffer[120];
344  time_t now = time(nullptr);
345  struct tm* tm = localtime(&now);
346  strftime(buffer, 120, "%F %T", tm);
348 }
std::string creationstamp_
Definition: HcalLuttoDB.cc:74

◆ endJob()

void HcalLuttoDB::endJob ( void  )
overridevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 351 of file HcalLuttoDB.cc.

Referenced by o2olib.O2ORunMgr::executeJob().

351 {}

◆ extractOutputLut()

std::vector< unsigned char > HcalLuttoDB::extractOutputLut ( const CaloTPGTranscoder coder,
HcalTrigTowerDetId  chan 
)
private

Definition at line 260 of file HcalLuttoDB.cc.

References officialStyle::chan, mps_fire::i, and alignCSCRings::s.

Referenced by analyze().

260  {
261  std::vector<unsigned char> lut;
262  for (int i = 0; i < 1024; i++) {
263  HcalTriggerPrimitiveSample s = coder.hcalCompress(chan, i, false);
264  lut.push_back(s.compressedEt());
265  }
266  return lut;
267 }
chan
lumi = TPaveText(lowX+0.38, lowY+0.061, lowX+0.45, lowY+0.161, "NDC") lumi.SetBorderSize( 0 ) lumi...

◆ openChecksums()

std::ostream * HcalLuttoDB::openChecksums ( )
private

Definition at line 106 of file HcalLuttoDB.cc.

References fileformat_, and alignmentValidation::fname.

Referenced by analyze().

106  {
107  char fname[1024];
108  snprintf(fname, 1024, "%s_checksums.xml", fileformat_.c_str());
109  std::ostream* os = new std::ofstream(fname);
110  (*os) << "<?xml version=\"1.0\"?>\n<CFGBrick>\n";
111  return os;
112 }
const std::string fileformat_
Definition: HcalLuttoDB.cc:73
string fname
main script

◆ openPerCrate()

std::ostream * HcalLuttoDB::openPerCrate ( int  crate)
private

Definition at line 114 of file HcalLuttoDB.cc.

References fileformat_, and alignmentValidation::fname.

Referenced by analyze().

114  {
115  char fname[1024];
116  snprintf(fname, 1024, "%s_%d.xml", fileformat_.c_str(), crate);
117  std::ostream* os = new std::ofstream(fname);
118  (*os) << "<?xml version=\"1.0\"?>\n<CFGBrickSet>\n";
119  return os;
120 }
const std::string fileformat_
Definition: HcalLuttoDB.cc:73
string fname
main script

◆ openPerLut1()

std::ostream * HcalLuttoDB::openPerLut1 ( HcalElectronicsId  eid)
private

Definition at line 122 of file HcalLuttoDB.cc.

References runTauDisplay::eid, fileformat_, and alignmentValidation::fname.

Referenced by analyze().

122  {
123  char fname[1024];
124  snprintf(fname,
125  1024,
126  "%s_%d_%d%c_%d_%d_1.xml",
127  fileformat_.c_str(),
128  eid.readoutVMECrateId(),
129  eid.htrSlot(),
130  ((eid.htrTopBottom()) ? ('t') : ('b')),
131  eid.fiberIndex(),
132  eid.fiberChanId());
133  std::ostream* os = new std::ofstream(fname);
134  (*os) << "<?xml version=\"1.0\"?>\n";
135  return os;
136 }
const std::string fileformat_
Definition: HcalLuttoDB.cc:73
string fname
main script

◆ openPerLut2()

std::ostream * HcalLuttoDB::openPerLut2 ( HcalElectronicsId  eid)
private

Definition at line 138 of file HcalLuttoDB.cc.

References runTauDisplay::eid, fileformat_, and alignmentValidation::fname.

Referenced by analyze().

138  {
139  char fname[1024];
140  snprintf(fname,
141  1024,
142  "%s_%d_%d%c_%d_%d_2.xml",
143  fileformat_.c_str(),
144  eid.readoutVMECrateId(),
145  eid.htrSlot(),
146  ((eid.htrTopBottom()) ? ('t') : ('b')),
147  eid.slbSiteNumber(),
148  eid.slbChannelIndex());
149  std::ostream* os = new std::ofstream(fname);
150  (*os) << "<?xml version=\"1.0\"?>\n";
151  return os;
152 }
const std::string fileformat_
Definition: HcalLuttoDB.cc:73
string fname
main script

◆ writeoutlut1()

void HcalLuttoDB::writeoutlut1 ( HcalDetId  id,
HcalElectronicsId  eid,
const std::vector< unsigned short > &  lut,
std::ostream &  os 
)
private

Definition at line 154 of file HcalLuttoDB.cc.

References creationstamp_, creationtag_, TauDecayModes::dec, runTauDisplay::eid, formatRevision_, HcalForward, mps_fire::i, oc_, and targetfirmware_.

Referenced by analyze().

157  {
158  os << "<CFGBrick> " << std::endl;
159  os << " <Parameter name='IETA' type='int'>" << id.ieta() << "</Parameter>" << std::endl;
160  os << " <Parameter name='IPHI' type='int'>" << id.iphi() << "</Parameter>" << std::endl;
161  os << " <Parameter name='DEPTH' type='int'>" << id.depth() << "</Parameter>" << std::endl;
162  os << " <Parameter name='CRATE' type='int'>" << eid.readoutVMECrateId() << "</Parameter>" << std::endl;
163  os << " <Parameter name='SLOT' type='int'>" << eid.htrSlot() << "</Parameter>" << std::endl;
164  os << " <Parameter name='TOPBOTTOM' type='int'>" << eid.htrTopBottom() << "</Parameter>" << std::endl;
165  os << " <Parameter name='FIBER' type='int'>" << eid.fiberIndex() << "</Parameter>" << std::endl;
166  os << " <Parameter name='FIBERCHAN' type='int'>" << eid.fiberChanId() << "</Parameter>" << std::endl;
167  os << " <Parameter name='LUT_TYPE' type='int'>1</Parameter>" << std::endl;
168  os << " <Parameter name='CREATIONTAG' type='string'>" << creationtag_ << "</Parameter>" << std::endl;
169  os << " <Parameter name='CREATIONSTAMP' type='string'>" << creationstamp_ << "</Parameter>" << std::endl;
170  os << " <Parameter name='FORMATREVISION' type='string'>" << formatRevision_ << "</Parameter>" << std::endl;
171  os << " <Parameter name='TARGETFIRMWARE' type='string'>" << targetfirmware_ << "</Parameter>" << std::endl;
172  int generalizedIndex = id.ietaAbs() + 1000 * id.depth() + 10000 * id.iphi() + ((id.ieta() < 0) ? (0) : (100)) +
173  ((id.subdet() == HcalForward && id.ietaAbs() == 29) ? (4 * 10000) : (0));
174 
175  os << " <Parameter name='GENERALIZEDINDEX' type='int'>" << generalizedIndex << "</Parameter>" << std::endl;
176  // do checksum
177  md5_state_t md5er;
178  md5_byte_t digest[16];
179  unsigned char tool[2];
180  md5_init(&md5er);
181  for (int i = 0; i < 128; i++) {
182  tool[0] = lut[i] & 0xFF;
183  tool[1] = (lut[i] >> 8) & 0xFF;
184  md5_append(&md5er, tool, 2);
185  }
186  md5_finish(&md5er, digest);
187  os << " <Parameter name='CHECKSUM' type='string'>";
188  for (int i = 0; i < 16; i++)
189  os << std::hex << (((int)(digest[i])) & 0xFF);
190  os << "</Parameter>\n";
191 
192  *oc_ << " <Data crate='" << eid.readoutVMECrateId() << "' slot='" << eid.htrSlot() << "' fpga='"
193  << eid.htrTopBottom() << "' fiber='" << eid.fiberIndex() << "' fiberchan='" << eid.fiberChanId()
194  << "' luttype='1' elements='1' encoding='hex'>";
195  for (int i = 0; i < 16; i++)
196  *oc_ << std::hex << (((int)(digest[i])) & 0xFF);
197  *oc_ << "</Data>\n";
198 
199  os << " <Data elements='128' encoding='hex'> " << std::endl;
200  os << std::hex;
201  for (int initr2 = 0; initr2 < 128; initr2++) {
202  os << lut[initr2] << " ";
203  }
204  os << std::dec;
205  os << std::endl;
206  os << " </Data> " << std::endl;
207  os << "</CFGBrick> " << std::endl;
208 }
const std::string targetfirmware_
Definition: HcalLuttoDB.cc:71
std::ostream * oc_
Definition: HcalLuttoDB.cc:82
std::string creationstamp_
Definition: HcalLuttoDB.cc:74
const std::string creationtag_
Definition: HcalLuttoDB.cc:70
static const int formatRevision_
Definition: HcalLuttoDB.cc:86

◆ writeoutlut2()

void HcalLuttoDB::writeoutlut2 ( HcalTrigTowerDetId  id,
HcalElectronicsId  eid,
const std::vector< unsigned char > &  lut,
std::ostream &  os 
)
private

Definition at line 210 of file HcalLuttoDB.cc.

References creationstamp_, creationtag_, TauDecayModes::dec, runTauDisplay::eid, formatRevision_, mps_fire::i, createfilelist::int, oc_, and targetfirmware_.

Referenced by analyze().

213  {
214  os << "<CFGBrick> " << std::endl;
215  os << " <Parameter name='IETA' type='int'>" << id.ieta() << "</Parameter>" << std::endl;
216  os << " <Parameter name='IPHI' type='int'>" << id.iphi() << "</Parameter>" << std::endl;
217  os << " <Parameter name='CRATE' type='int'>" << eid.readoutVMECrateId() << "</Parameter>" << std::endl;
218  os << " <Parameter name='SLOT' type='int'>" << eid.htrSlot() << "</Parameter>" << std::endl;
219  os << " <Parameter name='TOPBOTTOM' type='int'>" << eid.htrTopBottom() << "</Parameter>" << std::endl;
220  os << " <Parameter name='SLB' type='int'>" << eid.slbSiteNumber() << "</Parameter>" << std::endl;
221  os << " <Parameter name='SLBCHAN' type='int'>" << eid.slbChannelIndex() << "</Parameter>" << std::endl;
222  os << " <Parameter name='LUT_TYPE' type='int'>2</Parameter>" << std::endl;
223  os << " <Parameter name='CREATIONTAG' type='string'>" << creationtag_ << "</Parameter>" << std::endl;
224  os << " <Parameter name='CREATIONSTAMP' type='string'>" << creationstamp_ << "</Parameter>" << std::endl;
225  os << " <Parameter name='FORMATREVISION' type='string'>" << formatRevision_ << "</Parameter>" << std::endl;
226  os << " <Parameter name='TARGETFIRMWARE' type='string'>" << targetfirmware_ << "</Parameter>" << std::endl;
227  int generalizedIndex = id.ietaAbs() + 10000 * id.iphi() + ((id.ieta() < 0) ? (0) : (100));
228 
229  os << " <Parameter name='GENERALIZEDINDEX' type='int'>" << generalizedIndex << "</Parameter>" << std::endl;
230 
231  // do checksum
232  md5_state_t md5er;
233  md5_byte_t digest[16];
234  md5_init(&md5er);
235  md5_append(&md5er, &(lut[0]), 1024);
236  md5_finish(&md5er, digest);
237  os << " <Parameter name='CHECKSUM' type='string'>";
238  for (int i = 0; i < 16; i++)
239  os << std::hex << (((int)(digest[i])) & 0xFF);
240  os << "</Parameter>\n";
241 
242  *oc_ << " <Data crate='" << eid.readoutVMECrateId() << "' slot='" << eid.htrSlot() << "' fpga='"
243  << eid.htrTopBottom() << "' slb='" << eid.slbSiteNumber() << "' slbchan='" << eid.slbChannelIndex()
244  << "' luttype='2' elements='1' encoding='hex'>";
245  for (int i = 0; i < 16; i++)
246  *oc_ << std::hex << (((int)(digest[i])) & 0xFF);
247  *oc_ << "</Data>\n";
248 
249  os << " <Data elements='1024' encoding='hex'> " << std::endl;
250  os << std::hex;
251  for (int initr2 = 0; initr2 < 1024; initr2++) {
252  os << (int(lut[initr2]) & 0xFF) << " ";
253  }
254  os << std::dec;
255  os << std::endl;
256  os << " </Data> " << std::endl;
257  os << "</CFGBrick> " << std::endl;
258 }
const std::string targetfirmware_
Definition: HcalLuttoDB.cc:71
std::ostream * oc_
Definition: HcalLuttoDB.cc:82
std::string creationstamp_
Definition: HcalLuttoDB.cc:74
const std::string creationtag_
Definition: HcalLuttoDB.cc:70
static const int formatRevision_
Definition: HcalLuttoDB.cc:86

Member Data Documentation

◆ creationstamp_

std::string HcalLuttoDB::creationstamp_
private

Definition at line 74 of file HcalLuttoDB.cc.

Referenced by beginJob(), writeoutlut1(), and writeoutlut2().

◆ creationtag_

const std::string HcalLuttoDB::creationtag_
private

Definition at line 70 of file HcalLuttoDB.cc.

Referenced by writeoutlut1(), and writeoutlut2().

◆ fileformat_

const std::string HcalLuttoDB::fileformat_
private

Definition at line 73 of file HcalLuttoDB.cc.

Referenced by openChecksums(), openPerCrate(), openPerLut1(), and openPerLut2().

◆ filePerCrate_

const bool HcalLuttoDB::filePerCrate_
private

Definition at line 72 of file HcalLuttoDB.cc.

Referenced by analyze().

◆ oc_

std::ostream* HcalLuttoDB::oc_
private

Definition at line 82 of file HcalLuttoDB.cc.

Referenced by analyze(), writeoutlut1(), and writeoutlut2().

◆ targetfirmware_

const std::string HcalLuttoDB::targetfirmware_
private

Definition at line 71 of file HcalLuttoDB.cc.

Referenced by writeoutlut1(), and writeoutlut2().

◆ tokcaloCode_

edm::ESGetToken<CaloTPGTranscoder, CaloTPGRecord> HcalLuttoDB::tokcaloCode_
private

Definition at line 81 of file HcalLuttoDB.cc.

Referenced by analyze(), and HcalLuttoDB().

◆ tokdb_

edm::ESGetToken<HcalDbService, HcalDbRecord> HcalLuttoDB::tokdb_
private

Definition at line 79 of file HcalLuttoDB.cc.

Referenced by analyze(), and HcalLuttoDB().

◆ tokhcalCode_

edm::ESGetToken<HcalTPGCoder, HcalTPGRecord> HcalLuttoDB::tokhcalCode_
private

Definition at line 80 of file HcalLuttoDB.cc.

Referenced by analyze(), and HcalLuttoDB().