15 template <
class Coll,
class DetIdClass>
20 typename Coll::const_iterator
i =
pt->find(DetIdClass(did));
57 constexpr
int CORFormatVersion = 1;
63 spigots[spigot].
allocate(CORFormatVersion);
67 for (
int fiber = 1; fiber <= 12; fiber++)
68 for (
int fiberchan = 0; fiberchan < 3; fiberchan++) {
69 int linear = (fiber - 1) * 3 + fiberchan;
77 if (!emap.
lookup(partialEid, fullEid, genId))
83 int mysamples = findSamples(genId,
inputs, database, mypresamples);
87 else if (
samples != mysamples) {
88 edm::LogError(
"CASTOR") <<
"Mismatch of samples in a single COR (unsupported) " << mysamples
96 edm::LogError(
"CASTOR") <<
"Mismatch of presamples in a single COR (unsupported) " << mypresamples
106 spigots[spigot].
pack(&(preclen[0]), &(precdata[0]), &(triglen[0]), &(trigdata[0]),
true);
107 constexpr
int pipeline = 0x22;
108 constexpr
int firmwareRev = 0;
110 submodule |= (exampleEId.
htrSlot() & 0x1F) << 1;
117 for (
int spigot = 0; spigot < 2; spigot++) {
118 theSize += spigots[spigot].
getRawLength() *
sizeof(
unsigned short);
123 theSize += mergerdata.
getRawLength() *
sizeof(
unsigned short);
126 theSize += (8 - (theSize % 8)) % 8;
135 for (
int spigot = 0; spigot < 2; spigot++) {
136 if (spigots[spigot].getRawLength() > 0)
static const int CHANNELS_PER_SPIGOT
int readoutVMECrateId() const
void pack(unsigned char *daq_lengths, unsigned short *daq_samples, unsigned char *tp_lengths, unsigned short *tp_samples, bool do_capid=false)
Unpack the HTR data into TP and DAQ data sorted by channel.
void packHeaderTrailer(int L1Anumber, int bcn, int submodule, int orbitn, int pipeline, int ndd, int nps, int firmwareRev=0)
pack header and trailer (call after pack)
Log< level::Error, false > LogError
constexpr Detector det() const
get the detector field from this detid
static void pack(int fedid, int dccnumber, int nl1a, int orbitn, int bcn, const CastorCollections &inputs, const CastorElectronicsMap &emap, FEDRawData &output)
static void set(unsigned char *trailer, uint32_t lenght, uint16_t crc, uint8_t evt_stat, uint8_t tts, bool moreTrailers=false)
Set all fields in the trailer.
static const int MAXIMUM_SAMPLES_PER_CHANNEL
unsigned short compute_crc(unsigned char *buffer, unsigned int bufSize)
void allocate(int version_to_create=0)
const DetId lookup(CastorElectronicsId fId) const
lookup the logical detid associated with the given electronics id
static int findSamples(const DetId &did, const CastorCollections &inputs, unsigned short *buffer, int &presamples)
const int getRawLength() const
Get the length of the raw data.
Readout chain identification for Castor Bits for the readout chain : some names need change! [31:26] ...
const int getRawLength() const
Get the length of the raw data.