00001 // Date : 02/03/2004 00002 // Author : N.Almeida (LIP) 00003 00004 00005 #ifndef DCCTBTOWERBLOCK_HH 00006 #define DCCTBTOWERBLOCK_HH 00007 00008 #include <iostream> 00009 #include <string> 00010 #include <vector> 00011 #include <map> 00012 #include <utility> 00013 00014 00015 #include "DCCBlockPrototype.h" 00016 00017 class DCCTBEventBlock; 00018 class DCCTBXtalBlock; 00019 class DCCTBDataParser; 00020 00021 class DCCTBTowerBlock : public DCCTBBlockPrototype { 00022 00023 public : 00024 00025 DCCTBTowerBlock( 00026 DCCTBEventBlock * dccBlock, 00027 DCCTBDataParser * parser, 00028 uint32_t * buffer, 00029 uint32_t numbBytes, 00030 uint32_t wordsToEnd, 00031 uint32_t wordEventOffset, 00032 uint32_t expectedTowerID 00033 ); 00034 00035 ~DCCTBTowerBlock(); 00036 00037 void parseXtalData(); 00038 int towerID(); 00039 00040 std::vector< DCCTBXtalBlock * > & xtalBlocks(); 00041 00042 std::vector< DCCTBXtalBlock * > xtalBlocksById(uint32_t stripId, uint32_t xtalId); 00043 00044 protected : 00045 00046 void dataCheck(); 00047 00048 enum towerFields{ BXMASK = 0xFFF,L1MASK = 0xFFF }; 00049 00050 std::vector<DCCTBXtalBlock * > xtalBlocks_; 00051 DCCTBEventBlock * dccBlock_; 00052 uint32_t expectedTowerID_; 00053 00054 00055 }; 00056 00057 inline std::vector<DCCTBXtalBlock *> & DCCTBTowerBlock::xtalBlocks(){ return xtalBlocks_; } 00058 00059 #endif