LDMX Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
hcal::HcalRawDecoder Class Reference

Public Member Functions

 HcalRawDecoder (const std::string &name, framework::Process &process)
 
void configure (framework::config::Parameters &) override
 Callback for the EventProcessor to configure itself from the given set of parameters.
 
void beforeNewRun (ldmx::RunHeader &rh) override
 add detector name if we are reading from file
 
void produce (framework::Event &event) override
 use read function to decode data, then translate EIDs into DetIDs
 
- Public Member Functions inherited from framework::Producer
 Producer (const std::string &name, Process &process)
 Class constructor.
 
- Public Member Functions inherited from framework::EventProcessor
 EventProcessor (const std::string &name, Process &process)
 Class constructor.
 
virtual ~EventProcessor ()
 Class destructor.
 
virtual void onNewRun (const ldmx::RunHeader &runHeader)
 Callback for the EventProcessor to take any necessary action when the run being processed changes.
 
virtual void onFileOpen (EventFile &eventFile)
 Callback for the EventProcessor to take any necessary action when a new event input ROOT file is opened.
 
virtual void onFileClose (EventFile &eventFile)
 Callback for the EventProcessor to take any necessary action when a event input ROOT file is closed.
 
virtual void onProcessStart ()
 Callback for the EventProcessor to take any necessary action when the processing of events starts, such as creating histograms.
 
virtual void onProcessEnd ()
 Callback for the EventProcessor to take any necessary action when the processing of events finishes, such as calculating job-summary quantities.
 
template<class T >
const T & getCondition (const std::string &condition_name)
 Access a conditions object for the current event.
 
TDirectory * getHistoDirectory ()
 Access/create a directory in the histogram file for this event processor to create histograms and analysis tuples.
 
void setStorageHint (framework::StorageControl::Hint hint)
 Mark the current event as having the given storage control hint from this module.
 
void setStorageHint (framework::StorageControl::Hint hint, const std::string &purposeString)
 Mark the current event as having the given storage control hint from this module and the given purpose string.
 
int getLogFrequency () const
 Get the current logging frequency from the process.
 
int getRunNumber () const
 Get the run number from the process.
 
std::string getName () const
 Get the processor name.
 
void createHistograms (const std::vector< framework::config::Parameters > &histos)
 Internal function which is used to create histograms passed from the python configuration @parma histos vector of Parameters that configure histograms to create.
 

Private Member Functions

template<typename ReaderType >
std::map< ldmx::HcalElectronicsID, std::vector< ldmx::HgcrocDigiCollection::Sample > > read (ReaderType &reader, PolarfireEventHeader &eh)
 Assume input reader behaves like a binary data input stream where we can "pop" individual 32-bit words with operator>> and we can check if the reader is done using operator bool()
 

Private Attributes

std::string input_file_
 input file of encoded data
 
std::vector< std::string > input_names_
 input object of encoded data
 
std::string input_pass_
 input pass of creating encoded data
 
std::string output_name_
 output object to put onto event bus
 
std::string detector_name_
 the detector name if we are reading from a file
 
int roc_version_
 version of HGC ROC we are decoding
 
bool translate_eid_
 are get translating electronic IDs?
 
bool read_from_file_
 is the input_name a file or an event object
 
packing::utility::Reader file_reader_
 the file reader (if we are doing that)
 

Additional Inherited Members

- Static Public Member Functions inherited from framework::EventProcessor
static void declare (const std::string &classname, int classtype, EventProcessorMaker *)
 Internal function which is part of the PluginFactory machinery.
 
- Static Public Attributes inherited from framework::Producer
static const int CLASSTYPE {1}
 Constant used to track EventProcessor types by the PluginFactory.
 
- Protected Member Functions inherited from framework::EventProcessor
void abortEvent ()
 Abort the event immediately.
 
- Protected Attributes inherited from framework::EventProcessor
HistogramHelper histograms_
 Interface class for making and filling histograms.
 
NtupleManagerntuple_ {NtupleManager::getInstance()}
 Manager for any ntuples.
 
logging::logger theLog_
 The logger for this EventProcessor.
 

Detailed Description

Definition at line 57 of file HcalRawDecoder.h.

Constructor & Destructor Documentation

◆ HcalRawDecoder()

hcal::HcalRawDecoder::HcalRawDecoder ( const std::string &  name,
framework::Process process 
)
inline

Definition at line 59 of file HcalRawDecoder.h.

60 : framework::Producer(name, process) {}
Base class for a module which produces a data product.

Member Function Documentation

◆ beforeNewRun()

void hcal::HcalRawDecoder::beforeNewRun ( ldmx::RunHeader rh)
overridevirtual

add detector name if we are reading from file

Reimplemented from framework::Producer.

Definition at line 89 of file HcalRawDecoder.cxx.

89 {
90 // if we are reading from a file, we need to provide the detector name
91 if (read_from_file_) {
93 }
94}
std::string detector_name_
the detector name if we are reading from a file
bool read_from_file_
is the input_name a file or an event object
void setDetectorName(const std::string &det)
Set the name of the detector that was used in this run.
Definition RunHeader.h:80

References detector_name_, read_from_file_, and ldmx::RunHeader::setDetectorName().

◆ configure()

void hcal::HcalRawDecoder::configure ( framework::config::Parameters parameters)
overridevirtual

Callback for the EventProcessor to configure itself from the given set of parameters.

The parameters a processor has access to are the member variables of the python class in the sequence that has className equal to the EventProcessor class name.

For an example, look at MyProcessor.

Parameters
parametersParameters for configuration.

Reimplemented from framework::EventProcessor.

Definition at line 75 of file HcalRawDecoder.cxx.

75 {
76 input_file_ = ps.getParameter<std::string>("input_file");
77 input_names_ = ps.getParameter<std::vector<std::string>>("input_names", {});
78 input_pass_ = ps.getParameter<std::string>("input_pass");
79 output_name_ = ps.getParameter<std::string>("output_name");
80 roc_version_ = ps.getParameter<int>("roc_version");
81 translate_eid_ = ps.getParameter<bool>("translate_eid");
82 read_from_file_ = ps.getParameter<bool>("read_from_file");
83 detector_name_ = ps.getParameter<std::string>("detector_name");
84 if (read_from_file_) {
86 }
87}
std::string output_name_
output object to put onto event bus
std::string input_file_
input file of encoded data
packing::utility::Reader file_reader_
the file reader (if we are doing that)
std::vector< std::string > input_names_
input object of encoded data
bool translate_eid_
are get translating electronic IDs?
int roc_version_
version of HGC ROC we are decoding
std::string input_pass_
input pass of creating encoded data
void open(const std::string &file_name)
Open a file with this reader.
Definition Reader.h:35

References detector_name_, file_reader_, framework::config::Parameters::getParameter(), input_file_, input_names_, input_pass_, packing::utility::Reader::open(), output_name_, read_from_file_, roc_version_, and translate_eid_.

◆ produce()

void hcal::HcalRawDecoder::produce ( framework::Event event)
overridevirtual

use read function to decode data, then translate EIDs into DetIDs

Translation

Now the HgcrocDigiCollection::Sample class handles the unpacking of individual samples; however, we still need to translate electronic IDs into detector IDs.

DO NOTHING skip hits where the EID aren't in the detector mapping no zero supp during test beam on the front-end, so channels that aren't connected to anything are still being readout.

no EID translation, just add the digis to the digi collection with their raw electronic ID TODO: remove this, we shouldn't be able to get past the decoding stage without translating the EID into a detector ID to avoid confusion in recon

Implements framework::Producer.

Definition at line 96 of file HcalRawDecoder.cxx.

96 {
98 std::vector<ldmx::HgcrocDigiCollection::Sample>>
99 eid_to_samples;
100 PolarfireEventHeader eh;
101 if (read_from_file_) {
102 if (!file_reader_ or file_reader_.eof()) return;
103 eid_to_samples = this->read(file_reader_, eh);
104 } else {
105 for (const auto& name : input_names_) {
106 hcal::utility::Reader bus_reader(
107 event.getCollection<uint8_t>(name, input_pass_));
108 auto single_pf_samples = this->read(bus_reader, eh);
109 for (const auto& [id, samples] : single_pf_samples) {
110 eid_to_samples[id] = samples;
111 }
112 }
113 }
114
115 eh.board(event, output_name_);
116
118 // assume all channels have same number of samples
119 digis.setNumSamplesPerDigi(eid_to_samples.begin()->second.size());
120 digis.setSampleOfInterestIndex(0); // TODO configurable
122 if (translate_eid_) {
130#ifdef DEBUG
131 std::cout << "Translating EIDs into DetIDs. Printing skipped EIDs..."
132 << std::endl;
133#endif
134 auto detmap{
135 getCondition<HcalDetectorMap>(HcalDetectorMap::CONDITIONS_OBJECT_NAME)};
136 for (auto const& [eid, digi] : eid_to_samples) {
137 // The electronics map returns an empty ID of the correct
138 // type when the electronics ID is not found.
139 // need to check if the electronics ID exists
140 // TODO: do we want to end processing if this happens?
141 if (detmap.exists(eid)) {
142 uint32_t did_raw = detmap.get(eid).raw();
143 digis.addDigi(did_raw, digi);
144 } else {
151#ifdef DEBUG
152 std::cout << "EID(" << eid.fiber() << "," << eid.elink() << ","
153 << eid.channel() << ") ";
154 for (auto& s : digi) std::cout << debug::hex(s.raw()) << " ";
155 std::cout << std::endl;
156#endif
157 }
158 }
159 } else {
167 for (auto const& [eid, digi] : eid_to_samples) {
168 digis.addDigi(eid.raw(), digi);
169 }
170 }
171
172#ifdef DEBUG
173 std::cout << "adding " << digis.getNumDigis() << " digis each with "
174 << digis.getNumSamplesPerDigi() << " samples to event bus"
175 << std::endl;
176#endif
177 event.add(output_name_, digis);
178 return;
179} // produce
const std::vector< ContentType > & getCollection(const std::string &collectionName, const std::string &passName="") const
Get a collection (std::vector) of objects from the event bus.
Definition Event.h:386
static constexpr const char * CONDITIONS_OBJECT_NAME
The name of the EID <-> DetID map for the ECal.
std::map< ldmx::HcalElectronicsID, std::vector< ldmx::HgcrocDigiCollection::Sample > > read(ReaderType &reader, PolarfireEventHeader &eh)
Assume input reader behaves like a binary data input stream where we can "pop" individual 32-bit word...
Read out 32-bit words from a 8-bit buffer.
Identifies a location in the Hcal readout chain.
Represents a collection of the digi hits readout by an HGCROC.
unsigned int getNumSamplesPerDigi() const
Get number of samples per digi.
void setNumSamplesPerDigi(unsigned int n)
Set number of samples for each digi.
void setSampleOfInterestIndex(unsigned int n)
Set index of sample of interest.
void setVersion(int v)
Set the version of the ROC we have read.
void addDigi(unsigned int id, const std::vector< Sample > &digi)
Add samples to collection.
unsigned int getNumDigis() const
Get total number of digis.
bool eof()
check if file is done
Definition Reader.h:214

References ldmx::HgcrocDigiCollection::addDigi(), hcal::PolarfireEventHeader::board(), hcal::HcalDetectorMap::CONDITIONS_OBJECT_NAME, packing::utility::Reader::eof(), file_reader_, framework::Event::getCollection(), ldmx::HgcrocDigiCollection::getNumDigis(), ldmx::HgcrocDigiCollection::getNumSamplesPerDigi(), input_names_, input_pass_, output_name_, read(), read_from_file_, roc_version_, ldmx::HgcrocDigiCollection::setNumSamplesPerDigi(), ldmx::HgcrocDigiCollection::setSampleOfInterestIndex(), ldmx::HgcrocDigiCollection::setVersion(), and translate_eid_.

◆ read()

template<typename ReaderType >
std::map< ldmx::HcalElectronicsID, std::vector< ldmx::HgcrocDigiCollection::Sample > > hcal::HcalRawDecoder::read ( ReaderType &  reader,
PolarfireEventHeader eh 
)
inlineprivate

Assume input reader behaves like a binary data input stream where we can "pop" individual 32-bit words with operator>> and we can check if the reader is done using operator bool()

Note: Contains quite a lot of debug details and variables that aren't actually used but should be kept around. Could possibly be cleaned up at some point but for now, best to leave alone

Static parameters depending on ROC version

words for reading and decoding

Decode event header

For the time being, the number of sample lengths is fixed to make the firmware for DMA readout simpler. This means we readout the leftover dummy words to move the pointer on the reader.

extended event header in version 2

Re-sort the data from grouped by bunch to by channel

The readout chip streams the data off of it, so it doesn't have time to re-group the signals across multiple bunches (samples) by their channel ID. We need to do that here.

Decode Bunch Header We have a few words of header material before the actual data. This header material is assumed to be encoded as in Table 3 of the DAQ specs.

<name> (bits)

VERSION (4) | FPGA_ID (8) | NLINKS (6) | 00 | LEN (12) BX ID (12) | RREQ (10) | OR (10) RID ok (1) | CRC ok (1) | LEN3 (6) | RID ok (1) | CRC ok (1) | LEN2 (6) | RID ok (1) | CRC ok (1) | LEN1 (6) | RID ok (1) | CRC ok (1) | LEN0 (6) ... other listing of links ...

Decode Each Link in Sequence Now we should be decoding each link serially where each link was encoded as in Table 4 of the DAQ specs

ROC_ID (16) | CRC ok (1) | 0 (7) | RO Map (8) RO Map (32)

If minimum length of 2 is not written for this link, assume it went down and skip

Special "Header" Word from ROC

version 3: 0101 | BXID (12) | RREQ (6) | OR (3) | HE (3) | 0101

version 2: 10101010 | BXID (12) | WADD (9) | 1010

Common Mode Channels 10 | 0000000000 | Common Mode ADC 0 (10) | Common Mode ADC 1 (10)

DAQ Channels

The HGC ROC has some odd behavior in terms of reading out the different channels.

  • extra header word in row j = 0
  • common mode channel in row (j) number 19 or 1 (depending on the version)
  • calib channel in row j = 20 This introduces a special shift for the channel number to "align" with the range 0-35 per link.

    polarfire fpga = fpga readout roc = i_link / 2 // integer division channel = j - 1 - (j > common_mode_channel)*1 - (j > calib_channel)*1

Definition at line 81 of file HcalRawDecoder.h.

81 {
85 static const unsigned int common_mode_channel = roc_version_ == 2 ? 19 : 1;
86 static const unsigned int calib_channel = 20;
88 static uint32_t head1, head2, w;
89
90 // special header words not counted in event length
91 do {
92 reader >> head1;
93 } while (head1 != 0xbeef2021 and head1 != 0xbeef2022);
94
98 long int eventlen;
99 long int i_event{0};
100 /* whole event header word looks like
101 *
102 * VERSION (4) | FPGA ID (8) | NSAMPLES (4) | LEN (16)
103 */
104 reader >> head1;
105 i_event++;
106
107 eh.version = (head1 >> 28) & packing::utility::mask<4>;
108 eh.fpga = (head1 >> 20) & packing::utility::mask<8>;
109 eh.nsamples = (head1 >> 16) & packing::utility::mask<4>;
110 eventlen = head1 & packing::utility::mask<16>;
111 if (eh.version == 1u) {
112 // eventlen is 32-bit words in event
113 // do nothing here
114 } else if (eh.version == 2u) {
115 // eventlen is 64-bit words in event,
116 // need to multiply by 2 to get actual 32-bit event length
117 eventlen *= 2;
118 // and subtract off the special header word above
119 eventlen -= 1;
120 } else {
121 EXCEPTION_RAISE(
122 "VersMis",
123 "HcalRawDecoder only knows version 1 and 2 of DAQ format.");
124 }
125 // sample counters
126 int n_words{0};
127 std::vector<uint32_t> length_per_sample(eh.nsamples, 0);
128 for (uint32_t i_sample{0}; i_sample < eh.nsamples; i_sample++) {
129 if (i_sample % 2 == 0) {
130 n_words++;
131 reader >> w;
132 i_event++;
133 }
134 uint32_t shift_in_word = 16 * (i_sample % 2);
135 length_per_sample[i_sample] =
136 (w >> shift_in_word) & packing::utility::mask<12>;
137 }
138
139 if (eh.version == 2) {
145 for (int i_word{n_words}; i_word < 8; i_word++) {
146 reader >> head1;
147 i_event++;
148 }
149
153 reader >> head1;
154 i_event++;
155 eh.spill = ((head1 >> 12) & 0xfff);
156 eh.bunch = (head1 & 0xfff);
157 reader >> head1;
158 i_event++;
159 eh.ticks = head1;
160 reader >> head1;
161 i_event++;
162 eh.number = head1;
163 reader >> head1;
164 i_event++;
165 eh.run = (head1 & 0xFFF);
166 eh.DD = (head1 >> 23) & 0x1F;
167 eh.MM = (head1 >> 28) & 0xF;
168 eh.hh = (head1 >> 18) & 0x1F;
169 eh.mm = (head1 >> 12) & 0x3F;
170 }
171
179 // fill map of **electronic** IDs to the digis that were read out
181 std::vector<ldmx::HgcrocDigiCollection::Sample>>
182 eid_to_samples;
183 std::size_t i_sample{0};
184 while (i_event < eventlen) {
185 reader >> head1 >> head2;
186 i_event += 2;
202 packing::utility::CRC fpga_crc;
203 fpga_crc << head1;
204
205 [[maybe_unused]] uint32_t hgcroc_version =
206 (head1 >> 28) & packing::utility::mask<4>;
207 uint32_t fpga = (head1 >> 20) & packing::utility::mask<8>;
208 uint32_t nlinks = (head1 >> 14) & packing::utility::mask<6>;
209 [[maybe_unused]] uint32_t len = head1 & packing::utility::mask<12>;
210
211 fpga_crc << head2;
212
213 [[maybe_unused]] uint32_t bx_id =
214 (head2 >> 20) & packing::utility::mask<12>;
215 [[maybe_unused]] uint32_t rreq =
216 (head2 >> 10) & packing::utility::mask<10>;
217 [[maybe_unused]] uint32_t orbit = head2 & packing::utility::mask<10>;
218
219 std::vector<uint32_t> length_per_link(nlinks, 0);
220 for (uint32_t i_link{0}; i_link < nlinks; i_link++) {
221 if (i_link % 4 == 0) {
222 i_event++;
223 reader >> w;
224 fpga_crc << w;
225 }
226 uint32_t shift_in_word = 8 * (i_link % 4);
227 [[maybe_unused]] bool rid_ok =
228 ((w >> (shift_in_word + 7)) & packing::utility::mask<1>) == 1;
229 [[maybe_unused]] bool cdc_ok =
230 ((w >> (shift_in_word + 6)) & packing::utility::mask<1>) == 1;
231 length_per_link[i_link] =
232 (w >> shift_in_word) & packing::utility::mask<6>;
233 }
234
243 eh.good_bxheader.resize(nlinks);
244 eh.good_trailer.resize(nlinks);
245 for (uint32_t i_link{0}; i_link < nlinks; i_link++) {
250 if (length_per_link.at(i_link) < 2) {
251 continue;
252 }
253 // move on from last word counting links or previous link
254 packing::utility::CRC link_crc;
255 i_event++;
256 reader >> w;
257 fpga_crc << w;
258 link_crc << w;
259 [[maybe_unused]] uint32_t roc_id =
260 (w >> 16) & packing::utility::mask<16>;
261 [[maybe_unused]] bool crc_ok =
262 ((w >> 15) & packing::utility::mask<1>) == 1;
263
264 // get readout map from the last 8 bits of this word
265 // and the entire next word
266 std::bitset<40> ro_map = w & packing::utility::mask<8>;
267 ro_map <<= 32;
268 i_event++;
269 reader >> w;
270 fpga_crc << w;
271 link_crc << w;
272 ro_map |= w;
273 // loop through channels on this link,
274 // since some channels may have been suppressed because of low
275 // amplitude the channel ID is not the same as the index it
276 // is listed in.
277 int j{-1};
278 for (uint32_t i_word{2}; i_word < length_per_link.at(i_link);
279 i_word++) {
280 // skip zero-suppressed channel IDs
281 do {
282 j++;
283 } while (j < 40 and not ro_map.test(j));
284
285 // next word is this channel
286 i_event++;
287 reader >> w;
288 fpga_crc << w;
289
290 if (j == 0) {
299 link_crc << w;
300 // v2
301 eh.good_bxheader[i_link] = ((w & 0xff000000) == 0xaa000000);
302 // v3
303 //
304 // Shadows a previous declaration but is never used so renamed here
305 [[maybe_unused]] uint32_t v3_bx_id =
306 (w >> 16) & packing::utility::mask<12>;
307 [[maybe_unused]] uint32_t short_event =
308 (w >> 10) & packing::utility::mask<6>;
309 [[maybe_unused]] uint32_t short_orbit =
310 (w >> 7) & packing::utility::mask<3>;
311 [[maybe_unused]] uint32_t hamming_errs =
312 (w >> 4) & packing::utility::mask<3>;
313 } else if (j == common_mode_channel) {
317 link_crc << w;
318 } else if (j == calib_channel) {
319 // calib channel
320 link_crc << w;
321 } else if (j == 39) {
322 // trailer on each link added by ROC
323 // ROC v2 - IDLE word
324 // ROC v3 - CRC checksum
325 if (roc_version_ == 2) {
326 bool good_idle = (w == 0xaccccccc);
327 eh.good_trailer[i_link] = good_idle;
328 } else {
329 bool good_crc = (link_crc.get() == w);
330 eh.good_trailer[i_link] = good_crc;
331 }
332 /*
333 if (roc_version_ > 2 and link_crc.get() != w) {
334 EXCEPTION_RAISE("BadCRC",
335 "Our calculated link checksum doesn't match the "
336 "one from raw data.");
337 }
338 */
339 } else {
341
342 link_crc << w;
358 ldmx::HcalElectronicsID eid(fpga, i_link,
359 j - 1 - 1 * (j > common_mode_channel) -
360 1 * (j > calib_channel));
361 // copy data into EID->sample map
362 eid_to_samples[eid].emplace_back(w);
363 } // type of channel
364 } // loop over channels (j in Table 4)
365 } // loop over links
366
367 // another CRC checksum from FPGA
368 i_event++;
369 reader >> w;
370 [[maybe_unused]] uint32_t crc = w;
371 /* TODO
372 * fix calculation of FPGA checksum
373 * I can't figure out why it isn't matching, but there
374 * is definitely a word here where the FPGA checksum would be.
375 if (fpga_crc.get() != crc) {
376 EXCEPTION_RAISE(
377 "BadCRC",
378 "Our calculated FPGA checksum doesn't match the one read in.");
379 }
380 */
381 // padding to reach 64-bit boundary in version 2
382 if (eh.version == 2u and length_per_sample.at(i_sample) % 2 == 1) {
383 i_event++;
384 reader >> head1;
385 }
386 i_sample++;
387 }
388
389 if (eh.version == 1u) {
390 // special footer words
391 reader >> head1 >> head2;
392 }
393
394 return eid_to_samples;
395 }
The HGC ROC and FPGA use a CRC checksum to double check that the data transfer has been done correctl...
Definition CRC.h:50
uint32_t get()
Get the calculate checksum from the calculator.
Definition CRC.h:110

References hcal::PolarfireEventHeader::bunch, hcal::PolarfireEventHeader::DD, hcal::PolarfireEventHeader::fpga, packing::utility::CRC::get(), hcal::PolarfireEventHeader::good_bxheader, hcal::PolarfireEventHeader::good_trailer, hcal::PolarfireEventHeader::hh, hcal::PolarfireEventHeader::MM, hcal::PolarfireEventHeader::mm, hcal::PolarfireEventHeader::nsamples, hcal::PolarfireEventHeader::number, roc_version_, hcal::PolarfireEventHeader::run, hcal::PolarfireEventHeader::spill, hcal::PolarfireEventHeader::ticks, and hcal::PolarfireEventHeader::version.

Referenced by produce().

Member Data Documentation

◆ detector_name_

std::string hcal::HcalRawDecoder::detector_name_
private

the detector name if we are reading from a file

Definition at line 407 of file HcalRawDecoder.h.

Referenced by beforeNewRun(), and configure().

◆ file_reader_

packing::utility::Reader hcal::HcalRawDecoder::file_reader_
private

the file reader (if we are doing that)

Definition at line 417 of file HcalRawDecoder.h.

Referenced by configure(), and produce().

◆ input_file_

std::string hcal::HcalRawDecoder::input_file_
private

input file of encoded data

Definition at line 399 of file HcalRawDecoder.h.

Referenced by configure().

◆ input_names_

std::vector<std::string> hcal::HcalRawDecoder::input_names_
private

input object of encoded data

Definition at line 401 of file HcalRawDecoder.h.

Referenced by configure(), and produce().

◆ input_pass_

std::string hcal::HcalRawDecoder::input_pass_
private

input pass of creating encoded data

Definition at line 403 of file HcalRawDecoder.h.

Referenced by configure(), and produce().

◆ output_name_

std::string hcal::HcalRawDecoder::output_name_
private

output object to put onto event bus

Definition at line 405 of file HcalRawDecoder.h.

Referenced by configure(), and produce().

◆ read_from_file_

bool hcal::HcalRawDecoder::read_from_file_
private

is the input_name a file or an event object

Definition at line 413 of file HcalRawDecoder.h.

Referenced by beforeNewRun(), configure(), and produce().

◆ roc_version_

int hcal::HcalRawDecoder::roc_version_
private

version of HGC ROC we are decoding

Definition at line 409 of file HcalRawDecoder.h.

Referenced by configure(), produce(), and read().

◆ translate_eid_

bool hcal::HcalRawDecoder::translate_eid_
private

are get translating electronic IDs?

Definition at line 411 of file HcalRawDecoder.h.

Referenced by configure(), and produce().


The documentation for this class was generated from the following files: