CMS 3D CMS Logo

FUResource.h

Go to the documentation of this file.
00001 #ifndef FURESOURCE_H
00002 #define FURESOURCE_H 1
00003 
00004 
00005 #include "EventFilter/ResourceBroker/interface/FUTypes.h"
00006 #include "EventFilter/ShmBuffer/interface/FUShmRawCell.h"
00007 #include "EventFilter/Utilities/interface/Exception.h"
00008 
00009 #include "log4cplus/logger.h"
00010 #include "toolbox/mem/Reference.h"
00011 
00012 #include <vector>
00013 
00014 
00015 namespace evf {
00016   
00017   class FUResource
00018   {
00019   public:
00020     //
00021     // construction/destruction
00022     //
00023     FUResource(UInt_t fuResourceId,log4cplus::Logger logger);
00024     virtual ~FUResource();
00025     
00026     
00027     //
00028     // member functions
00029     //
00030     void   allocate(FUShmRawCell* shmCell);
00031     void   release();   
00032 
00033     void   process(MemRef_t* bufRef);
00034     void   processDataBlock(MemRef_t* bufRef) throw (evf::Exception);
00035     void   checkDataBlockPayload(MemRef_t* bufRef) throw (evf::Exception);
00036     void   appendBlockToSuperFrag(MemRef_t* bufRef);
00037     
00038     void   superFragSize()        throw (evf::Exception);
00039     void   fillSuperFragPayload() throw (evf::Exception);
00040     void   findFEDs()             throw (evf::Exception);
00041     
00042     void   releaseSuperFrag();
00043 
00044     static
00045     void   doFedIdCheck(bool doFedIdCheck) { doFedIdCheck_=doFedIdCheck; }
00046     static
00047     void   useEvmBoard(bool useEvmBoard)   { useEvmBoard_ =useEvmBoard; }
00048     void   doCrcCheck(bool doCrcCheck)     { doCrcCheck_  =doCrcCheck; }
00049     
00050     bool   crcBeingChecked() { return doCrcCheck_; }
00051 
00052     bool   fatalError()   const { return fatalError_; }
00053     bool   isAllocated()  const { return 0!=shmCell_; }
00054     bool   isComplete()   const;
00055         
00056     UInt_t fuResourceId() const { return fuResourceId_; }
00057     UInt_t buResourceId() const { return buResourceId_; }
00058     UInt_t evtNumber()    const { return evtNumber_; }
00059     
00060     UInt_t nbSent()       const  { return nbSent_; }
00061     void   incNbSent()           { nbSent_++; }
00062     
00063     UInt_t nbErrors(bool reset=true);
00064     UInt_t nbCrcErrors(bool reset=true);
00065     UInt_t nbBytes(bool reset=true);
00066 
00067     evf::FUShmRawCell* shmCell() { return shmCell_; }
00068 
00069     
00070     
00071   private:
00072     //
00073     // member data
00074     //
00075     log4cplus::Logger log_;
00076     
00077     static
00078     bool      doFedIdCheck_;
00079     static
00080     bool      useEvmBoard_;    
00081     bool      doCrcCheck_;
00082     bool      fatalError_;
00083 
00084     UInt_t    fuResourceId_;
00085     UInt_t    buResourceId_;
00086     UInt_t    evtNumber_;
00087     
00088     MemRef_t* superFragHead_;
00089     MemRef_t* superFragTail_;
00090 
00091     UInt_t    eventPayloadSize_;
00092     UInt_t    nFedMax_;
00093     UInt_t    nSuperFragMax_;
00094     
00095     UInt_t    iBlock_;
00096     UInt_t    nBlock_;
00097     UInt_t    iSuperFrag_;
00098     UInt_t    nSuperFrag_;
00099     
00100     UInt_t    nbSent_;
00101     
00102     UInt_t    nbErrors_;
00103     UInt_t    nbCrcErrors_;
00104     UInt_t    nbBytes_;
00105 
00106     UInt_t    fedSize_[1024];
00107     UInt_t    superFragSize_;
00108     UInt_t    eventSize_;
00109     
00110     evf::FUShmRawCell* shmCell_;
00111     
00112 
00113     static unsigned int gtpDaqId_;
00114     static unsigned int gtpEvmId_;
00115     static unsigned int gtpeId_;
00116 
00117   };
00118   
00119   //
00120   // typedefs
00121   //
00122   typedef std::vector<FUResource*> FUResourceVec_t;
00123 
00124   
00125 } // namespace evf
00126 
00127 
00128 //
00129 // implementation of inline functions
00130 //
00131 inline
00132 bool evf::FUResource::isComplete() const
00133 {
00134   return (nBlock_&&nSuperFrag_&&(iSuperFrag_==nSuperFrag_)&&(iBlock_==nBlock_));
00135 }
00136 
00137 
00138 #endif

Generated on Tue Jun 9 17:34:46 2009 for CMSSW by  doxygen 1.5.4