DCCTBTowerBlock

towerFields

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
// Date   : 02/03/2004
// Author : N.Almeida (LIP)

#ifndef DCCTBTOWERBLOCK_HH
#define DCCTBTOWERBLOCK_HH

#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <utility>

#include "DCCBlockPrototype.h"

class DCCTBEventBlock;
class DCCTBXtalBlock;
class DCCTBDataParser;

class DCCTBTowerBlock : public DCCTBBlockPrototype {
public:
  DCCTBTowerBlock(DCCTBEventBlock *dccBlock,
                  DCCTBDataParser *parser,
                  const uint32_t *buffer,
                  uint32_t numbBytes,
                  uint32_t wordsToEnd,
                  uint32_t wordEventOffset,
                  uint32_t expectedTowerID);

  ~DCCTBTowerBlock() override;

  void parseXtalData();
  int towerID();

  std::vector<DCCTBXtalBlock *> &xtalBlocks();

  std::vector<DCCTBXtalBlock *> xtalBlocksById(uint32_t stripId, uint32_t xtalId);

protected:
  void dataCheck();

  enum towerFields { BXMASK = 0xFFF, L1MASK = 0xFFF };

  std::vector<DCCTBXtalBlock *> xtalBlocks_;
  DCCTBEventBlock *dccBlock_;
  uint32_t expectedTowerID_;
};

inline std::vector<DCCTBXtalBlock *> &DCCTBTowerBlock::xtalBlocks() { return xtalBlocks_; }

#endif