00001 #ifndef LinkDataXMLWriter_h
00002 #define LinkDataXMLWriter_h
00003
00004
00005
00006
00007 #include "FWCore/Framework/interface/Frameworkfwd.h"
00008 #include "FWCore/Framework/interface/EDAnalyzer.h"
00009 #include "FWCore/Framework/interface/EDFilter.h"
00010
00011 #include "FWCore/Framework/interface/Event.h"
00012 #include "FWCore/Framework/interface/MakerMacros.h"
00013
00014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00015 #include <FWCore/ParameterSet/interface/InputTag.h>
00016
00017 #include "IORawData/RPCFileReader/interface/RPCPacData.h"
00018
00019 #include <xercesc/util/PlatformUtils.hpp>
00020 #include <xercesc/util/XMLString.hpp>
00021 #include <xercesc/dom/DOM.hpp>
00022 #include <xercesc/framework/LocalFileFormatTarget.hpp>
00023 #include "boost/bind.hpp"
00024
00025 #include <vector>
00026 #include <string>
00027
00028
00029 XERCES_CPP_NAMESPACE_USE
00030
00031
00032
00033
00034
00035 class LinkDataXMLWriter: public edm::EDAnalyzer
00036 {
00037
00038 public:
00039 explicit LinkDataXMLWriter(const edm::ParameterSet&);
00040 virtual ~LinkDataXMLWriter();
00041
00042 virtual void analyze(const edm::Event&, const edm::EventSetup&);
00043
00044
00045
00046 private:
00047
00048 void addLinkData(int triggerCrateNum, int triggerBoardNum,
00049 int opticalLinkNum, int lbNumber,
00050 int partitionNumber, int partitionData,
00051 int halfPart, int eod);
00052
00053 void writeLinkData();
00054
00055 std::pair<int,int> getTCandTBNumbers(int dccInputChannelNum, int dccFactor);
00056
00057 void clear();
00058
00059 std::string m_xmlDir;
00060 edm::InputTag digiLabel;
00061
00062 static int m_instanceCount;
00063
00064 std::string IntToString(int i, int opt=0);
00065
00066 int nEvents;
00067 int nTC, nTB;
00068 DOMWriter* theSerializer;
00069 XMLFormatTarget *myFormTarget;
00070 DOMDocument* doc;
00071 DOMElement* rootElem;
00072 DOMElement* event;
00073
00074
00075 std::vector<std::vector<std::vector<std::vector< RPCPacData> > > > linkData;
00076
00077
00078 };
00079
00080
00081 #endif