20 check_pad_layers(
index);
21 return mPadLayers[
index];
26 check_pad_layers(
index);
27 return mPadLayers[
index];
32 check_pixel_layers(
index);
33 return mPixelLayers[
index];
37 check_pixel_layers(
index);
38 return mPixelLayers[
index];
43 check_pad_layers(
layer);
49 check_pixel_layers(
layer);
56 for (
auto& padlayer : mPadLayers) {
59 for (
auto& pixellayer : mPixelLayers) {
67 mInteractionRecord = interaction;
69 for (
auto& padlayer : pads) {
70 mPadLayers[ilayer] = padlayer;
75 for (
auto& chip : eventPixels) {
76 if (chip.getLayerID() > 1) {
77 std::cerr <<
"Invalid layer ID chip " << chip.getChipID() <<
": " << chip.getLayerID() << std::endl;
80 if (chip.getNumberOfHits()) {
81 if (chip.getFirstHit() >= pixelHits.size()) {
82 std::cerr <<
"First hit index " << chip.getFirstHit() <<
" exceeding hit contiainer " << pixelHits.size() << std::endl;
85 if (chip.getFirstHit() + chip.getNumberOfHits() - 1 >= pixelHits.size()) {
86 std::cerr <<
"First hit index " << chip.getFirstHit() + chip.getNumberOfHits() - 1 <<
" exceeding hit contiainer " << pixelHits.size() << std::endl;
89 mPixelLayers[chip.getLayerID()].addChip(chip.getFeeID(), chip.getLaneID(), chip.getChipID(), chip.getStatusCode(), pixelHits.subspan(chip.getFirstHit(), chip.getNumberOfHits()));
91 currentlast = chip.getFirstHit() + chip.getNumberOfHits();
93 if (currentlast < pixelHits.size()) {
94 std::cerr <<
"Inconsistent number of hits / event : all chips -> " << currentlast <<
" hits, container size -> " << pixelHits.size() << std::endl;
99void Event::check_pad_layers(
unsigned int index)
const
106void Event::check_pixel_layers(
unsigned int index)
const
116 auto& asicheader = mHeaders[half];
117 asicheader.mHeader = header;
119 asicheader.mFourbits = fourbits;
120 asicheader.mWADD = wadd;
121 asicheader.mTrailer = trailer;
126 check_channel(channel);
127 auto& asicchannel = mChannels[channel];
128 asicchannel.mADC =
adc;
129 asicchannel.mTOA = toa;
130 asicchannel.mTOT = tot;
135 check_halfs(channel);
136 auto& cmn = mCMN[channel];
144 check_halfs(channel);
145 auto& calib = mCalib[channel];
156 auto& currenttrigger = mTriggers[window];
157 currenttrigger.mHeader0 = header0;
158 currenttrigger.mHeader1 = header1;
159 std::copy(triggers.begin(), triggers.end(), currenttrigger.mTriggers.begin());
165 return mHeaders[half];
170 check_channel(channel);
171 return mChannels[channel];
189 return mTriggers[window];
194 std::array<uint16_t, constants::PADLAYER_MODULE_NCHANNELS> adcs;
196 adcs[ichan] = mChannels[ichan].mADC;
202 std::array<uint16_t, constants::PADLAYER_MODULE_NCHANNELS> toas;
204 toas[ichan] = mChannels[ichan].mTOA;
210 std::array<uint16_t, constants::PADLAYER_MODULE_NCHANNELS> tots;
212 tots[ichan] = mChannels[ichan].mTOT;
219 for (
auto& header : mHeaders) {
222 header.mFourbits = 0;
226 for (
auto& chan : mChannels) {
231 for (
auto& calib : mCalib) {
236 for (
auto& cmn : mCMN) {
241 for (
auto& trg : mTriggers) {
244 std::fill(trg.mTriggers.begin(), trg.mTriggers.end(), 0);
248void PadLayerEvent::check_halfs(
unsigned int half)
const
255void PadLayerEvent::check_channel(
unsigned int channel)
const
264 auto found = std::find_if(mChips.begin(), mChips.end(), [&chip](
const PixelChip& testchip) { return chip == testchip; });
265 if (found != mChips.end()) {
266 std::copy(chip.
mHits.begin(), chip.
mHits.end(), std::back_inserter(found->mHits));
268 mChips.push_back(chip);
274 auto found = std::find_if(mChips.begin(), mChips.end(), [laneID, chipID, feeID](
const PixelChip& testchip) { return chipID == testchip.mChipID && laneID == testchip.mLaneID && feeID == testchip.mFeeID; });
275 if (found != mChips.end()) {
276 std::copy(hits.begin(), hits.end(), std::back_inserter(found->mHits));
278 mChips.push_back({
static_cast<uint8_t
>(feeID),
static_cast<uint8_t
>(laneID),
static_cast<uint8_t
>(chipID), statusCode});
279 auto& currentchip = mChips.back();
280 std::copy(hits.begin(), hits.end(), std::back_inserter(currentchip.mHits));
void setPadLayer(unsigned int layer, const PadLayerEvent &event)
PadLayerEvent & getPadLayer(unsigned int index)
PixelLayerEvent & getPixelLayer(unsigned int index)
void construct(const o2::InteractionRecord &interaction, gsl::span< const PadLayerEvent > pads, gsl::span< const PixelChipRecord > eventPixels, gsl::span< const PixelHit > pixelHits)
void setPixelLayerEvent(unsigned int layer, const PixelLayerEvent &event)
std::array< uint16_t, constants::PADLAYER_MODULE_NCHANNELS > getADCs() const
const Channel & getCMN(unsigned int half) const
const TriggerWindow & getTrigger(unsigned int window) const
const Header & getHeader(unsigned int half) const
std::array< uint16_t, constants::PADLAYER_MODULE_NCHANNELS > getTOAs() const
const Channel & getChannel(unsigned int channel) const
void setCalib(unsigned int half, uint16_t adc, uint16_t toa, uint16_t tot)
std::array< uint16_t, constants::PADLAYER_MODULE_NCHANNELS > getTOTs() const
void setHeader(unsigned int half, uint8_t header, uint8_t bc, uint8_t wadd, uint8_t fourbits, uint8_t trialer)
const Channel & getCalib(unsigned int half) const
void setTrigger(unsigned int window, uint32_t header0, uint32_t header1, const gsl::span< uint8_t > triggers)
void setChannel(unsigned int channel, uint16_t adc, uint16_t toa, uint16_t tot)
void setCMN(unsigned int half, uint16_t adc, uint16_t toa, uint16_t tot)
void addChip(const PixelChip &chip)
GLenum GLuint GLint GLint layer
constexpr int PADLAYER_MODULE_NCHANNELS
constexpr int PADLAYER_MODULE_NHALVES
constexpr int PIXELS_NLAYERS
constexpr int PADLAYER_WINDOW_LENGTH
constexpr int PADS_NLAYERS
std::vector< PixelHit > mHits