CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2_patch1/src/EventFilter/EcalRawToDigi/interface/DCCFEBlock.h

Go to the documentation of this file.
00001 #ifndef DCCFEBLOCK_HH
00002 #define DCCFEBLOCK_HH
00003 
00004 #include <iostream>
00005 #include <memory>
00006 #include <stdint.h>
00007 #include <string>
00008 #include <vector>
00009 #include <map>
00010 #include <utility>
00011 
00012 #include <DataFormats/EcalDigi/interface/EcalDigiCollections.h>
00013 #include <DataFormats/EcalRawData/interface/EcalRawDataCollections.h>
00014 #include <DataFormats/EcalDetId/interface/EcalDetIdCollections.h>
00015 #include <FWCore/MessageLogger/interface/MessageLogger.h>
00016 
00017 #include "DCCDataBlockPrototype.h"
00018 
00019 class DCCEventBlock;
00020 class DCCDataUnpacker;
00021 
00022 class DCCFEBlock : public DCCDataBlockPrototype {
00023         
00024   public :
00025 
00026     DCCFEBlock(DCCDataUnpacker * u,EcalElectronicsMapper * m, DCCEventBlock * e, bool unpack, bool forceToKeepFRdata);
00027     
00028     virtual ~DCCFEBlock(){ delete [] xtalGains_;}
00029 
00030     void zsFlag(bool zs){ zs_ = zs;}
00031 
00032     void enableFeIdChecks(){checkFeId_= true;}
00033          
00034     virtual void updateCollectors();
00035     
00036     void display(std::ostream & o); 
00037     
00038     int unpack(const uint64_t** data, unsigned int * dwToEnd, bool zs, unsigned int expectedTowerID);
00039 
00040     unsigned int getLength(){return blockLength_; }
00041                         
00042   protected :
00043          
00044     virtual int unpackXtalData(unsigned int stripID, unsigned int xtalID){      return BLOCK_UNPACKED;};
00045     virtual void fillEcalElectronicsError( std::auto_ptr<EcalElectronicsIdCollection> * ){};
00046     
00047     
00048     bool zs_;
00049     bool checkFeId_;
00050     unsigned int expTowerID_;
00051     bool forceToKeepFRdata_;
00052     unsigned int expXtalTSamples_;
00053     unsigned int unfilteredDataBlockLength_;
00054     unsigned int lastStripId_;
00055     unsigned int lastXtalId_;
00056  
00057     unsigned int towerId_;      
00058     unsigned int numbDWInXtalBlock_;
00059     unsigned int xtalBlockSize_;
00060     unsigned int nTSamples_; 
00061     
00062     unsigned int blockSize_;
00063     unsigned int bx_;
00064     unsigned int l1_;
00065     
00066     short * xtalGains_;
00067     std::auto_ptr<EcalElectronicsIdCollection> * invalidTTIds_;
00068     std::auto_ptr<EcalElectronicsIdCollection> * invalidZSXtalIds_;
00069     std::auto_ptr<EcalElectronicsIdCollection> * invalidBlockLengths_;
00070 
00071 };
00072 
00073 
00074 #endif