File indexing completed on 2024-04-06 12:10:33
0001 #ifndef DCCMEMBLOCK_HH
0002 #define DCCMEMBLOCK_HH
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #include <iostream>
0018 #include <memory>
0019 #include <cstdint>
0020 #include <string>
0021 #include <vector>
0022 #include <map>
0023 #include <utility>
0024
0025 #include <DataFormats/EcalDigi/interface/EcalDigiCollections.h>
0026 #include <DataFormats/EcalRawData/interface/EcalRawDataCollections.h>
0027 #include <DataFormats/EcalDetId/interface/EcalDetIdCollections.h>
0028 #include <FWCore/MessageLogger/interface/MessageLogger.h>
0029 #include "DCCDataBlockPrototype.h"
0030
0031 class DCCEventBlock;
0032 class DCCDataUnpacker;
0033
0034 class DCCMemBlock : public DCCDataBlockPrototype {
0035 public:
0036 DCCMemBlock(DCCDataUnpacker* u, EcalElectronicsMapper* m, DCCEventBlock* e);
0037
0038 ~DCCMemBlock() override {}
0039
0040 void updateCollectors() override;
0041
0042 void display(std::ostream& o) override;
0043 using DCCDataBlockPrototype::unpack;
0044 int unpack(const uint64_t** data, unsigned int* dwToEnd, unsigned int expectedTowerID);
0045
0046 protected:
0047 void unpackMemTowerData();
0048 void fillPnDiodeDigisCollection();
0049
0050 std::vector<short> pn_;
0051
0052 unsigned int expTowerID_;
0053 unsigned int expXtalTSamples_;
0054 unsigned int kSamplesPerPn_;
0055
0056 unsigned int lastStripId_;
0057 unsigned int lastXtalId_;
0058 unsigned int lastTowerBeforeMem_;
0059
0060 unsigned int towerId_;
0061 unsigned int numbDWInXtalBlock_;
0062 unsigned int xtalBlockSize_;
0063 unsigned int nTSamples_;
0064 unsigned int unfilteredTowerBlockLength_;
0065
0066 unsigned int bx_;
0067 unsigned int l1_;
0068
0069 std::unique_ptr<EcalElectronicsIdCollection>* invalidMemChIds_;
0070 std::unique_ptr<EcalElectronicsIdCollection>* invalidMemBlockSizes_;
0071 std::unique_ptr<EcalElectronicsIdCollection>* invalidMemTtIds_;
0072 std::unique_ptr<EcalElectronicsIdCollection>* invalidMemGains_;
0073 std::unique_ptr<EcalPnDiodeDigiCollection>* pnDiodeDigis_;
0074 };
0075
0076 #endif