CMS 3D CMS Logo

LinkDataXMLReader.h

Go to the documentation of this file.
00001 #ifndef LinkDataXMLReader_h
00002 #define LinkDataXMLReader_h
00003 /* This work is heavly based on KB code (L1RpcPatternXMLReader)*/
00004 
00005 // user include files
00006 #include "FWCore/Framework/interface/Frameworkfwd.h"
00007 #include "FWCore/Framework/interface/Event.h"
00008 #include "FWCore/Framework/interface/MakerMacros.h"
00009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00010 
00011 #include "FWCore/Sources/interface/ExternalInputSource.h"
00012 
00013 #include "DataFormats/FEDRawData/interface/FEDRawData.h"
00014 #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
00015 #include "IORawData/RPCFileReader/interface/RPCPacData.h"
00016 #include "EventFilter/RPCRawToDigi/interface/EventRecords.h"
00017 
00018 #include <xercesc/sax2/Attributes.hpp>
00019 #include <xercesc/sax2/DefaultHandler.hpp>
00020 #include <xercesc/util/PlatformUtils.hpp>
00021 #include <xercesc/util/XMLString.hpp>
00022 #include <xercesc/dom/DOM.hpp>
00023 #include <xercesc/framework/LocalFileFormatTarget.hpp>
00024 #include <xercesc/framework/XMLPScanToken.hpp>
00025 #include <xercesc/sax2/SAX2XMLReader.hpp>
00026 #include "boost/bind.hpp"
00027 
00028 #include <vector>
00029 #include <string>
00030 #include <map>
00031 
00032 class FEDRawData;
00033 
00034 XERCES_CPP_NAMESPACE_USE
00035 /*############################################################################
00036 #
00037 #
00038 #
00039 ############################################################################*/
00040 class LinkDataXMLReader: public edm::ExternalInputSource, DefaultHandler 
00041 {
00042 
00043    public:
00044   explicit LinkDataXMLReader(const edm::ParameterSet& iConfig,
00045                              edm::InputSourceDescription const& desc);
00046   virtual ~LinkDataXMLReader();
00047 
00048   virtual bool produce(edm::Event &);
00049   virtual void setRunAndEventInfo();
00050 
00051 
00052  private:
00053 
00054   FEDRawData * rawData(int fedId,  const std::vector<rpcrawtodigi::EventRecords> & result);
00055   std::pair<int,int> getDCCInputChannelNum(int tcNumber, int tbNumber);
00056 
00057   void startElement(const XMLCh* const uri, const XMLCh* const localname, 
00058                     const XMLCh* const qname, const Attributes& attrs);
00059   
00060   void endElement (const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname);
00061 
00062   void clear();
00063 
00064   std::string IntToString(int i, int opt=0);
00065 
00066   int stringToInt(std::string str, int opt=0);
00067 
00068   int opticalLinkNum;
00069   int triggerCrateNum;
00070   int triggerBoardNum;
00071   bool isOpen_, noMoreData_, endOfEvent_;       
00072   bool endOfFile_;
00073   int eventPos_[2];
00074   int fileCounter_, eventCounter_;
00075   int run_, event_;
00076   std::string m_xmlDir;
00077   std::string m_CurrElement;
00078   static int m_instanceCount;
00079 
00080   std::map<int, std::vector<rpcrawtodigi::EventRecords> > results;
00081 
00082   XMLPScanToken aToken;
00083   SAX2XMLReader* parser;
00084 
00085 };
00086 
00087 
00088 #endif

Generated on Tue Jun 9 17:39:25 2009 for CMSSW by  doxygen 1.5.4