00001 /* 00002 * See header file for a description of this class. 00003 * 00004 * $Date: 2008/02/15 18:14:49 $ 00005 * $Revision: 1.3 $ 00006 * \author Paolo Ronchese INFN Padova 00007 * 00008 */ 00009 00010 //----------------------- 00011 // This Class' Header -- 00012 //----------------------- 00013 #include "CondTools/DT/interface/DTTtrigHandler.h" 00014 00015 //------------------------------- 00016 // Collaborating Class Headers -- 00017 //------------------------------- 00018 #include "CondFormats/DTObjects/interface/DTTtrig.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 DTTtrigHandler::DTTtrigHandler( 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 DTTtrigHandler::~DTTtrigHandler() { 00044 } 00045 00046 //-------------- 00047 // Operations -- 00048 //-------------- 00049 void DTTtrigHandler::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 DTTtrig* tTrig = new DTTtrig( dataTag ); 00085 00086 int status = 0; 00087 std::ifstream ifile( fileName.c_str() ); 00088 int whe; 00089 int sta; 00090 int sec; 00091 int qua; 00092 float tri; 00093 float rms; 00094 while ( ifile >> whe 00095 >> sta 00096 >> sec 00097 >> qua 00098 >> tri 00099 >> rms ) { 00100 status = tTrig->set( whe, sta, sec, qua, tri, rms ); 00101 std::cout << whe << " " 00102 << sta << " " 00103 << sec << " " 00104 << qua << " " 00105 << tri << " " 00106 << rms << " -> "; 00107 std::cout << "insert status: " << status << std::endl; 00108 } 00109 00110 /* 00111 unsigned int runf = irun; 00112 unsigned int runl = 0xffffffff; 00113 popcon::IOVPair iop = { runf, runl }; 00114 std::cout << "APPEND NEW OBJECT: " 00115 << runf << " " << runl << " " << tTrig << std::endl; 00116 m_to_transfer->push_back( std::make_pair( tTrig, iop ) ); 00117 */ 00118 00119 //for each payload provide IOV information (say in this case we use since) 00120 cond::Time_t snc = runNumber; 00121 if ( runNumber > last ) 00122 m_to_transfer.push_back( std::make_pair( tTrig, snc ) ); 00123 else 00124 std::cout << "More recent data already present - skipped" << std::endl; 00125 00126 return; 00127 00128 } 00129 00130 00131 std::string DTTtrigHandler::id() const { 00132 return dataTag; 00133 } 00134 00135