00001 #ifndef DCCSRPBLOCK_HH 00002 #define DCCSRPBLOCK_HH 00003 00004 00005 /* 00006 *\ Class DCCSRPBlock 00007 * 00008 * Class responsible for SR flag unpacking. 00009 * 00010 * \file DCCSRPBlock.h 00011 * 00012 * $Date: 2010/10/13 16:03:34 $ 00013 * $Revision: 1.3 $ 00014 * 00015 * \author N. Almeida 00016 * 00017 */ 00018 00019 00020 #include <iostream> 00021 #include <memory> 00022 #include <stdint.h> 00023 #include <string> 00024 #include <vector> 00025 #include <map> 00026 #include <utility> 00027 00028 #include "DCCDataBlockPrototype.h" 00029 00030 #include <DataFormats/EcalDigi/interface/EcalDigiCollections.h> 00031 #include <DataFormats/EcalRawData/interface/EcalRawDataCollections.h> 00032 #include <DataFormats/EcalDetId/interface/EcalDetIdCollections.h> 00033 00034 00035 class DCCSRPBlock : public DCCDataBlockPrototype { 00036 00037 public : 00038 00039 DCCSRPBlock( DCCDataUnpacker * u,EcalElectronicsMapper * m, DCCEventBlock * e, bool unpack); 00040 00041 void display(std::ostream & o); 00042 00043 int unpack(uint64_t ** data, unsigned int * dwToEnd, unsigned int numbFlags = SRP_NUMBFLAGS); 00044 00045 unsigned short srFlag(unsigned int feChannel){ return srFlags_[feChannel-1]; } 00046 00047 protected : 00048 00049 virtual void addSRFlagToCollection(){}; 00050 00051 virtual bool checkSrpIdAndNumbSRFlags(){ return true; }; 00052 00053 unsigned int srpId_ ; 00054 unsigned int bx_ ; 00055 unsigned int l1_ ; 00056 unsigned int nSRFlags_ ; 00057 unsigned int expNumbSrFlags_; 00058 00059 unsigned short srFlags_[SRP_NUMBFLAGS]; 00060 00061 00062 00063 }; 00064 00065 00066 #endif