00001 /* 00002 * See header file for a description of this class. 00003 * 00004 * $Date: 2009/02/16 13:21:15 $ 00005 * $Revision: 1.2 $ 00006 * \author Paolo Ronchese INFN Padova 00007 * 00008 */ 00009 00010 //----------------------- 00011 // This Class' Header -- 00012 //----------------------- 00013 #include "CondTools/DT/interface/DTTPGParametersHandler.h" 00014 00015 //------------------------------- 00016 // Collaborating Class Headers -- 00017 //------------------------------- 00018 #include "CondFormats/DTObjects/interface/DTTPGParameters.h" 00019 00020 //--------------- 00021 // C++ Headers -- 00022 //--------------- 00023 #include <iostream> 00024 #include <fstream> 00025 00026 //------------------- 00027 // Initializations -- 00028 //------------------- 00029 00030 00031 //---------------- 00032 // Constructors -- 00033 //---------------- 00034 DTTPGParametersHandler::DTTPGParametersHandler( const edm::ParameterSet& ps ): 00035 dataTag( ps.getParameter<std::string> ( "tag" ) ), 00036 fileName( ps.getParameter<std::string> ( "file" ) ), 00037 runNumber( ps.getParameter<unsigned int> ( "run" ) ) { 00038 } 00039 00040 //-------------- 00041 // Destructor -- 00042 //-------------- 00043 DTTPGParametersHandler::~DTTPGParametersHandler() { 00044 } 00045 00046 //-------------- 00047 // Operations -- 00048 //-------------- 00049 void DTTPGParametersHandler::getNewObjects() { 00050 00051 //to access the information on the tag inside the offline database: 00052 cond::TagInfo const & ti = tagInfo(); 00053 unsigned int last = ti.lastInterval.first; 00054 00055 //to access the information on last successful log entry for this tag: 00056 // cond::LogDBEntry const & lde = logDBEntry(); 00057 00058 //to access the lastest payload (Ref is a smart pointer) 00059 // Ref payload = lastPayload(); 00060 00061 /* 00062 int irun = event.id().run(); 00063 int ievt = event.id().event(); 00064 std::cout << "================ " 00065 << irun << " " << ievt << std::endl; 00066 00067 std::map<std::string, popcon::PayloadIOV> mp = getOfflineInfo(); 00068 std::map<std::string, popcon::PayloadIOV>::iterator iter = mp.begin(); 00069 std::map<std::string, popcon::PayloadIOV>::iterator iend = mp.end(); 00070 std::cout << "list of all tags: " << std::endl; 00071 while ( iter != iend ) { 00072 std::cout << "Tag: " << iter->first 00073 << " , last object valid since " << iter->second.last_since 00074 << " to " << iter->second.last_till 00075 << std::endl; 00076 iter++; 00077 } 00078 00079 std::cout << "look for tag " << dataTag << std::endl; 00080 std::map<std::string, popcon::PayloadIOV>::iterator itag = 00081 mp.find( dataTag ); 00082 */ 00083 00084 DTTPGParameters* tSync = new DTTPGParameters( dataTag ); 00085 00086 int status = 0; 00087 std::ifstream ifile( fileName.c_str() ); 00088 // int cx = 32; 00089 // ifile >> cx; 00090 // tSync->setClock( cx ); 00091 int whe; 00092 int sta; 00093 int sec; 00094 int cl; 00095 float ph; 00096 while ( ifile >> whe 00097 >> sta 00098 >> sec 00099 >> cl 00100 >> ph ) { 00101 status = tSync->set( whe, sta, sec, cl, ph, 00102 DTTimeUnits::ns ); 00103 std::cout << whe << " " 00104 << sta << " " 00105 << sec << " " 00106 << cl << " " 00107 << ph << " -> "; 00108 std::cout << "insert status: " << status << std::endl; 00109 } 00110 00111 /* 00112 unsigned int runf = irun; 00113 unsigned int runl = 0xffffffff; 00114 popcon::IOVPair iop = { runf, runl }; 00115 std::cout << "APPEND NEW OBJECT: " 00116 << runf << " " << runl << " " << tSync << std::endl; 00117 m_to_transfer->push_back( std::make_pair( tSync, iop ) ); 00118 */ 00119 00120 //for each payload provide IOV information (say in this case we use since) 00121 cond::Time_t snc = runNumber; 00122 if ( runNumber > last ) 00123 m_to_transfer.push_back( std::make_pair( tSync, snc ) ); 00124 else 00125 std::cout << "More recent data already present - skipped" << std::endl; 00126 00127 return; 00128 00129 } 00130 00131 00132 std::string DTTPGParametersHandler::id() const { 00133 return dataTag; 00134 } 00135 00136