File indexing completed on 2024-04-06 12:10:37
0001
0002
0003
0004 #ifndef DCCTBTOWERBLOCK_HH
0005 #define DCCTBTOWERBLOCK_HH
0006
0007 #include <iostream>
0008 #include <string>
0009 #include <vector>
0010 #include <map>
0011 #include <utility>
0012
0013 #include "DCCBlockPrototype.h"
0014
0015 class DCCTBEventBlock;
0016 class DCCTBXtalBlock;
0017 class DCCTBDataParser;
0018
0019 class DCCTBTowerBlock : public DCCTBBlockPrototype {
0020 public:
0021 DCCTBTowerBlock(DCCTBEventBlock *dccBlock,
0022 DCCTBDataParser *parser,
0023 const uint32_t *buffer,
0024 uint32_t numbBytes,
0025 uint32_t wordsToEnd,
0026 uint32_t wordEventOffset,
0027 uint32_t expectedTowerID);
0028
0029 ~DCCTBTowerBlock() override;
0030
0031 void parseXtalData();
0032 int towerID();
0033
0034 std::vector<DCCTBXtalBlock *> &xtalBlocks();
0035
0036 std::vector<DCCTBXtalBlock *> xtalBlocksById(uint32_t stripId, uint32_t xtalId);
0037
0038 protected:
0039 void dataCheck();
0040
0041 enum towerFields { BXMASK = 0xFFF, L1MASK = 0xFFF };
0042
0043 std::vector<DCCTBXtalBlock *> xtalBlocks_;
0044 DCCTBEventBlock *dccBlock_;
0045 uint32_t expectedTowerID_;
0046 };
0047
0048 inline std::vector<DCCTBXtalBlock *> &DCCTBTowerBlock::xtalBlocks() { return xtalBlocks_; }
0049
0050 #endif