| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

DaqRunInfoSvc Namespace Reference


Namespaces

namespace  __init__
namespace  Test

Functions

 DaqRunInfoSvc (const string &name, ISvcLocator *svc)
StatusCode initialize ()
StatusCode finalize ()
StatusCode queryInterface (const InterfaceID &riid, void **ppvInterface)
const DaqRawDataFileInfoGetFileInfo (const string fileName)
const DaqRunInfoGetRunInfo (const int runNo)
int runNumber (const string fileName)
const DaqCalibRunInfoGetCalibRunInfo (const int runNo)
int dbRecordVector (const int runNo, DatabaseRecordVector &vec)
int fullRunConfigList (const int runNo, vector< DayaBay::DaqRunConfig > &vec)
int simpRunConfigList (const int runNo, vector< DayaBay::DaqRunConfig > &vec)
int findHWList (vector< DayaBay::DaqRunConfig > cv, vector< string > &dets, vector< string > &crates, vector< string > &ltbs, vector< string > &fees)
int findFEEThreshold (string runType, vector< DayaBay::DaqRunConfig > cv, vector< string > fees, map< string, string > &th_obj, map< string, bool > &isuni, map< string, int > &thres_uni, map< string, map< string, int > > &thres)
int findLtbTrigger (string runType, vector< DayaBay::DaqRunConfig > cv, vector< string > ltbs, map< string, string > &mode, map< string, int > &source, map< string, string > &trig_name, map< string, map< string, int > > &trig_thres)
int findHWList (DatabaseRecordVector dbRV, vector< string > &dets, vector< string > &crates, vector< string > &ltbs, vector< string > &fees)
string GetRunType (const int runNo)
int stringInVector (string str, vector< string > vec)

Function Documentation

DaqRunInfoSvc::DaqRunInfoSvc ( const string &  name,
ISvcLocator svc 
)

Definition at line 21 of file DaqRunInfoSvc.cc.

00022 :Service(name, svc), m_dbSvc(0) 
00023 {
00024   declareProperty("DatabaseSvcName", m_dbSvcName="DatabaseSvc",
00025                  "Name of service which provides the interface to mysql");
00026 }

StatusCode DaqRunInfoSvc::initialize (  ) 

Definition at line 28 of file DaqRunInfoSvc.cc.

00029 {
00030   this->Service::initialize();
00031 
00032   MsgStream log( msgSvc(), name() );
00033 
00034   StatusCode sc = service(m_dbSvcName, m_dbSvc, true);
00035   if( sc != StatusCode::SUCCESS ){
00036     log << MSG::ERROR << "Failed to access Database service: "
00037         << m_dbSvcName <<endreq;
00038     return sc;
00039   }
00040 
00041   m_dbName = "testdb";
00042   char* name = getenv("DYB_DB_NAME");
00043   if (name){
00044     m_dbName = string(name);
00045   }
00046   else{
00047     log << MSG::WARNING << "Enviroment variable ${DYB_DB_NAME} is not set."<<endreq;
00048     log << MSG::WARNING << "Use the default database name: "<< m_dbName << endreq;
00049   }
00050   return StatusCode::SUCCESS;
00051 }

StatusCode DaqRunInfoSvc::finalize (  ) 

Definition at line 53 of file DaqRunInfoSvc.cc.

00054 {
00055   return this->Service::finalize();
00056 }

StatusCode DaqRunInfoSvc::queryInterface ( const InterfaceID riid,
void **  ppvInterface 
)

Definition at line 58 of file DaqRunInfoSvc.cc.

00060 {
00061   StatusCode sc = StatusCode::FAILURE;
00062   if (ppvInterface) {
00063     *ppvInterface = 0;
00064 
00065     if (IDaqRunInfoSvc::interfaceID().versionMatch(riid)) {
00066       *ppvInterface = static_cast<IDaqRunInfoSvc*>(this);
00067       sc = StatusCode::SUCCESS;
00068       addRef();
00069     }
00070     else sc = Service::queryInterface( riid, ppvInterface );
00071   }
00072   return sc;
00073 }

const DaqRawDataFileInfo* DaqRunInfoSvc::GetFileInfo ( const string  fileName  ) 

Definition at line 75 of file DaqRunInfoSvc.cc.

00076 {
00077   MsgStream log( msgSvc(), name() );
00078 
00079   //Get all the raw data files
00080   DbiSqlContext vc("1=1"); //WHERE clause
00081   DbiResultPtr<DaqRawDataFileInfo> rp("DaqRawDataFileInfo", vc);
00082 
00083   // Check number of entries in result set
00084   unsigned int numRows = rp.GetNumRows();
00085   if (numRows < 1){
00086     log << MSG::WARNING <<"==> No records is found in table DaqRawDataFileInfo."<<endreq;
00087     return 0;
00088   }
00089   const DaqRawDataFileInfo* row;
00090   for (unsigned int idx=0; idx < numRows; idx++){
00091     row = rp.GetRow(idx);
00092     if(fileName == row->GetFileName())
00093       return row;
00094   }
00095  
00096   log << MSG::WARNING <<fileName <<" is not found in table DaqRawDataFileInfo."<<endreq;
00097   return 0;
00098 }

const DaqRunInfo* DaqRunInfoSvc::GetRunInfo ( const int  runNo  ) 

Definition at line 100 of file DaqRunInfoSvc.cc.

00101 {
00102   MsgStream log( msgSvc(), name() );
00103 
00104   //Get all the raw data files
00105   DbiSqlContext vc("1=1"); //WHERE clause
00106   DbiResultPtr<DaqRunInfo> rp("DaqRunInfo", vc);
00107 
00108   // Check number of entries in result set
00109   unsigned int numRows = rp.GetNumRows();
00110   if (numRows < 1){
00111     log << MSG::WARNING <<"No records is found in table DaqRunInfo."<<endreq;
00112     return 0;
00113   }
00114   const DaqRunInfo* row;
00115   for (unsigned int idx=0; idx < numRows; idx++){
00116     row = rp.GetRow(idx);
00117     if(runNo == row->GetRunNo())
00118       return row;
00119   }
00120  
00121   log << MSG::WARNING <<"runNo: "<<runNo<<" is not found in table DaqRunInfo."<<endreq;
00122   return 0;
00123 }

int DaqRunInfoSvc::runNumber ( const string  fileName  ) 

Definition at line 125 of file DaqRunInfoSvc.cc.

00126 {
00127   MsgStream log( msgSvc(), name() );
00128   const DaqRawDataFileInfo* file = GetFileInfo(fileName);
00129   if(!file){
00130     log << MSG::WARNING <<"Can not find "<<fileName<<" in table DaqRawDataFileInfo."<<endreq;
00131     return 0;
00132   }
00133 
00134   return file->GetRunNo();
00135 }

const DaqCalibRunInfo* DaqRunInfoSvc::GetCalibRunInfo ( const int  runNo  ) 

Definition at line 137 of file DaqRunInfoSvc.cc.

00138 {
00139   MsgStream log( msgSvc(), name() );
00140 
00141   //Get all the raw data files
00142   DbiSqlContext vc("1=1"); //WHERE clause
00143   DbiResultPtr<DaqCalibRunInfo> rp("DaqCalibRunInfo", vc);
00144 
00145   // Check number of entries in result set
00146   unsigned int numRows = rp.GetNumRows();
00147   if (numRows < 1){
00148     log << MSG::WARNING <<"No records is found in table DaqCalibRunInfo."<<endreq;
00149     return 0;
00150   }
00151   const DaqCalibRunInfo* row;
00152   for (unsigned int idx=0; idx < numRows; idx++){
00153     row = rp.GetRowByIndex(idx);
00154     if(runNo == row->GetRunNo()){
00155       return row;
00156     }
00157   }
00158  
00159   log << MSG::WARNING <<"runNo: "<<runNo<<" is not found in table DaqCalibRunInfo."<<endreq;
00160   return 0;
00161 }

int DaqRunInfoSvc::dbRecordVector ( const int  runNo,
DatabaseRecordVector vec 
)

Definition at line 163 of file DaqRunInfoSvc.cc.

00164 {
00165   stringstream ss_runNo;
00166   ss_runNo<<runNo;
00167 
00168   string sql;
00169   sql = "SELECT t1.*"; 
00170   sql += " FROM DaqRunConfig as t1, DaqRunInfo as t2";
00171   sql += " WHERE t2.runNo = " + ss_runNo.str();
00172   sql += " AND t1.schemaVersion = t2.schemaVersion";
00173   sql += " AND ( t1.dataVersion = t2.dataVersion OR t1.dataVersion = t2.baseVersion AND t1.creationVersion <= t2.dataVersion )";
00174   sql += " ORDER BY t1.creationVersion DESC, className, objectId, name";
00175   // ordered by the version of data
00176          
00177   DatabaseRecordVector pre_vec;
00178   m_dbSvc->query(m_dbName, sql, pre_vec);
00179   
00180   // filter the pre_vec to ignore the run information of old version
00181   DatabaseRecordVector::iterator itr;
00182   DatabaseRecordVector::iterator it;
00183   for( itr = pre_vec.begin(); itr != pre_vec.end(); itr++){
00184     bool flag = true;
00185     if(vec.size() == 0) {
00186       vec.push_back((*itr));
00187       continue;
00188     }
00189     for( it = vec.begin(); it != vec.end(); it++){
00190       if((*it)["className"] == (*itr)["className"]
00191          && (*it)["objectId"] == (*itr)["objectId"]
00192          && (*it)["name"] == (*itr)["name"]
00193          && (*it)["parentPosition"] == (*itr)["parentPosition"]){
00194           flag = false;
00195           break;
00196       } // ignore the old version of data
00197     }
00198     if(flag) vec.push_back((*itr));
00199   }
00200   return 1;
00201 }

int DaqRunInfoSvc::fullRunConfigList ( const int  runNo,
vector< DayaBay::DaqRunConfig > &  vec 
)

Definition at line 203 of file DaqRunInfoSvc.cc.

00204 {
00205   DatabaseRecordVector dbRV;
00206   dbRecordVector(runNo, dbRV);
00207   
00208   MsgStream log( msgSvc(), name() );
00209   log << MSG::DEBUG <<dbRV.size()<<" rows are selected for runNo="<<runNo<<endreq;
00210   
00211   DatabaseRecordVector::iterator it ;
00212   for( it=dbRV.begin(); it != dbRV.end(); it++){
00213     DayaBay::DaqRunConfig config;
00214     config.m_SchemaVersion = atoi((*it)["schemaVersion"].c_str());
00215     config.m_DataVersion = atoi((*it)["dataVersion"].c_str());
00216     config.m_CreationVersion = atoi((*it)["creationVersion"].c_str());
00217     config.m_ClassName = (*it)["className"];
00218     config.m_ObjectId = (*it)["objectId"];
00219     config.m_Name = (*it)["name"];
00220     config.m_ParentPosition = atoi((*it)["parentPosition"].c_str());
00221     config.m_IntValue = atoi((*it)["intValue"].c_str());
00222     config.m_FloatValue = atof((*it)["floatValue"].c_str());
00223     config.m_StringValue = (*it)["stringValue"];
00224 
00225     vec.push_back(config);
00226 
00227   }
00228 
00229   return 1;
00230 }

int DaqRunInfoSvc::simpRunConfigList ( const int  runNo,
vector< DayaBay::DaqRunConfig > &  vec 
)

Definition at line 232 of file DaqRunInfoSvc.cc.

00233 {
00234   MsgStream log( msgSvc(), name() );
00235 
00236   string runType = GetRunType(runNo);
00237   DatabaseRecordVector dbRV;
00238   dbRecordVector(runNo, dbRV);
00239   DatabaseRecordVector::iterator itr;
00240 
00241   // find objects of detectors, crates, ltbs, fees
00242   vector<string> dets;
00243   vector<string> crates;
00244   vector<string> ltbs;
00245   vector<string> fees;
00246   findHWList(dbRV, dets, crates, ltbs, fees);
00247 
00248   // find object of threshld
00249   vector<string> thrs;
00250   for( itr = dbRV.begin(); itr != dbRV.end(); itr++){
00251     if( (*itr)["className"] == "FEE" && stringInVector((*itr)["objectId"], fees) && (*itr)["name"] == "childObjectId_FEEDACThreshold" && (*itr)["stringValue"].find(runType) != string::npos)
00252         thrs.push_back((*itr)["stringValue"]);
00253   }
00254   // find whether the DACSelect=UniformVal
00255   vector<bool> uniform;
00256   for( itr = dbRV.begin(); itr != dbRV.end(); itr++){
00257     if( (*itr)["className"] == "FEEDACThreshold" && stringInVector((*itr)["objectId"], thrs) && (*itr)["name"] == "DACSelect" ){
00258        if( (*itr)["stringValue"] == "UniformVal" ) 
00259          uniform.push_back(true);
00260        else 
00261          uniform.push_back(false);
00262     }
00263   }  
00264   
00265   for( itr=dbRV.begin(); itr != dbRV.end(); itr++){
00266     DayaBay::DaqRunConfig config;
00267     config.m_SchemaVersion = atoi((*itr)["schemaVersion"].c_str());
00268     config.m_DataVersion = atoi((*itr)["dataVersion"].c_str());
00269     config.m_CreationVersion = atoi((*itr)["creationVersion"].c_str());
00270     config.m_ClassName = (*itr)["className"];
00271     if(config.m_ClassName == "Partition" 
00272        || config.m_ClassName == "ROSApplication"
00273        || config.m_ClassName == "Segment" )
00274       continue;
00275     config.m_ObjectId = (*itr)["objectId"];
00276     if(config.m_ClassName == "FEEDACThreshold" || config.m_ClassName == "LTB_variableReg"){
00277        if(config.m_ObjectId.find(runType) == string::npos)
00278          continue;
00279     } 
00280     if(config.m_ClassName == "Detector"){
00281       if(stringInVector(config.m_ObjectId, dets) == 0)
00282         continue;
00283     }
00284     if(config.m_ClassName == "Crate"){
00285       if(stringInVector(config.m_ObjectId, crates) == 0)
00286         continue;
00287     }
00288     if(config.m_ClassName == "LTB"){
00289       if(stringInVector(config.m_ObjectId, ltbs) == 0)
00290         continue;
00291     }
00292     if(config.m_ClassName == "FEE"){
00293       if(stringInVector(config.m_ObjectId, fees) == 0)
00294         continue;
00295     }
00296     if(config.m_ClassName == "FEEDACThreshold"){
00297       if(stringInVector(config.m_ObjectId, thrs) == 0 )
00298         continue;
00299       //if(uniform[stringInVector(config.m_ObjectId, thrs)-1] && (*itr)["name"].find("DACVal_Chanel") != string::npos) 
00300       //  continue;
00301     }
00302  
00303     config.m_Name = (*itr)["name"];
00304     if(config.m_Name.find("childClassName") != string::npos)
00305       continue;
00306     config.m_ParentPosition = atoi((*itr)["parentPosition"].c_str());
00307     config.m_IntValue = atoi((*itr)["intValue"].c_str());
00308     config.m_FloatValue = atof((*itr)["floatValue"].c_str());
00309     config.m_StringValue = (*itr)["stringValue"];
00310     bool flag = true; 
00311 
00312     // use the latest version of data.
00313     if(flag) vec.push_back(config);
00314 
00315   }
00316 
00317   return 1;
00318 }

int DaqRunInfoSvc::findHWList ( vector< DayaBay::DaqRunConfig cv,
vector< string > &  dets,
vector< string > &  crates,
vector< string > &  ltbs,
vector< string > &  fees 
)

Definition at line 319 of file DaqRunInfoSvc.cc.

00320 {
00321   vector<DayaBay::DaqRunConfig>::iterator it;
00322   for ( it = cv.begin(); it != cv.end(); it++){
00323     if(it->m_ClassName == "ROSConfiguration" && it->m_Name == "childObjectId_Detectors")
00324       dets.push_back(it->m_StringValue);
00325   }
00326   for ( it = cv.begin(); it != cv.end(); it++){
00327     if(it->m_ClassName == "Detector" && it->m_Name == "childObjectId_HW_Objects" && stringInVector(it->m_ObjectId, dets))
00328       crates.push_back(it->m_StringValue);
00329   }
00330   for ( it = cv.begin(); it != cv.end(); it++){
00331     if(it->m_ClassName == "Crate" && it->m_Name == "childObjectId_LTB" && stringInVector(it->m_ObjectId, crates))
00332       ltbs.push_back(it->m_StringValue);
00333     if(it->m_ClassName == "Crate" && it->m_Name == "childObjectId_Modules" && stringInVector(it->m_ObjectId, crates))
00334       fees.push_back(it->m_StringValue);
00335   }
00336   return 1;
00337 }

int DaqRunInfoSvc::findFEEThreshold ( string  runType,
vector< DayaBay::DaqRunConfig cv,
vector< string >  fees,
map< string, string > &  th_obj,
map< string, bool > &  isuni,
map< string, int > &  thres_uni,
map< string, map< string, int > > &  thres 
)

Definition at line 339 of file DaqRunInfoSvc.cc.

00340 {
00341   vector<DayaBay::DaqRunConfig>::iterator it;
00342   for ( it = cv.begin(); it != cv.end(); it++){ 
00343     if(it->m_ClassName == "FEE" && stringInVector(it->m_ObjectId, fees) && it->m_Name == "childObjectId_FEEDACThreshold" && it->m_StringValue.find(runType) != string::npos)
00344       th_obj[it->m_ObjectId] = it->m_StringValue;
00345   }
00346 
00347   map<string, string>::iterator itr;
00348   for(itr = th_obj.begin(); itr != th_obj.end(); itr++){
00349     for ( it = cv.begin(); it != cv.end(); it++){
00350       if(it->m_ClassName == "FEEDACThreshold" && it->m_ObjectId == itr->second && it->m_Name == "DACSelect"){
00351         if(it->m_StringValue == "UniformVal")
00352           isuni[itr->first] = true;
00353         else
00354           isuni[itr->first] = false;
00355       }
00356     }
00357     map<string, int> amap;
00358     for ( it = cv.begin(); it != cv.end(); it++){
00359       if(it->m_ClassName == "FEEDACThreshold" && it->m_ObjectId == itr->second && it->m_Name == "DACUniformVal" && isuni[itr->first])
00360         thres_uni[itr->first] = it->m_IntValue;
00361       if(it->m_ClassName == "FEEDACThreshold" && it->m_ObjectId == itr->second && it->m_Name.find("DACVal_Chanel") != string::npos){
00362         amap[it->m_Name] = it->m_IntValue;
00363       }
00364     }
00365     thres[itr->first] = amap;
00366   }
00367   return 1;
00368 }

int DaqRunInfoSvc::findLtbTrigger ( string  runType,
vector< DayaBay::DaqRunConfig cv,
vector< string >  ltbs,
map< string, string > &  mode,
map< string, int > &  source,
map< string, string > &  trig_name,
map< string, map< string, int > > &  trig_thres 
)

Definition at line 370 of file DaqRunInfoSvc.cc.

00371 {
00372   vector<DayaBay::DaqRunConfig>::iterator it;
00373   for ( it = cv.begin(); it != cv.end(); it++){
00374     if(it->m_ClassName == "LTB" && stringInVector(it->m_ObjectId, ltbs) && it->m_Name == "childObjectId_LTB_variableReg" && it->m_StringValue.find(runType) != string::npos)
00375       mode[it->m_ObjectId] = it->m_StringValue;
00376   }
00377 
00378   const int kMANUAL = 1;
00379   const int kCROSS = 2;
00380   const int kPERIODIC = 4;
00381   const int kMULTIPLICITY = 256;
00382   const int kESUM_ADC = 512;
00383   const int kHIGH_ESUM_COMP = 1024;
00384   const int kLOW_ESUM_COMP = 2048;
00385   const int kALL_ESUM_COMP = 4096;
00386 
00387   map<string, string>::iterator itr;
00388   for(itr = mode.begin(); itr != mode.end(); itr++){
00389     std::string name = "";
00390     map<string, int> threshold;
00391     for ( it = cv.begin(); it != cv.end(); it++){
00392       if(it->m_ClassName == "LTB_variableReg" && it->m_Name == "LTB_triggerSource" && it->m_ObjectId == itr->second){
00393         source[itr->first] = it->m_IntValue;
00394         if(kMANUAL & it->m_IntValue)
00395           name += "MANUAL_TRIGGER[1]  ";
00396         if(kCROSS & it->m_IntValue)
00397           name += "CROSS_TRIGGER_IN[2]  ";
00398         if(kPERIODIC & it->m_IntValue)
00399           name += "PERIODIC_TRIGGER[4]  ";
00400         if(kMULTIPLICITY & it->m_IntValue)
00401           name += "MULTIPLICITY_TRIGGER[256]  ";
00402         if(kESUM_ADC & it->m_IntValue)
00403           name += "ESUM_ADC_TRG[512]  ";
00404         if(kHIGH_ESUM_COMP & it->m_IntValue)
00405           name += "HIGH_ESUM_COMP_TRG[1024]  ";
00406         if(kLOW_ESUM_COMP & it->m_IntValue)
00407           name += "LOW_ESUM_COMP_TRG[2048]  ";
00408         if(kALL_ESUM_COMP & it->m_IntValue)
00409           name += "ALL_ESUM_COMP_TRG[4096]  ";
00410       }
00411     }
00412     trig_name[itr->first] = name;
00413 
00414     for (it = cv.begin(); it != cv.end(); it++){
00415       if(it->m_ClassName == "LTB_variableReg" && it->m_ObjectId == itr->second){
00416         if(trig_name[itr->first].find("MULTIPLICITY_TRIGGER") != string::npos && it->m_Name == "HSUM_trigger_threshold")
00417           threshold["MULTIPLICITY_TRIGGER"] = it->m_IntValue; 
00418         if(trig_name[itr->first].find("ESUM_ADC_TRG") != string::npos && it->m_Name == "ESUM_adc_trigger_threshold")
00419           threshold["ESUM_ADC_TRG"] = it->m_IntValue; 
00420         if(trig_name[itr->first].find("HIGH_ESUM_COMP_TRG") != string::npos && it->m_Name == "DAC_half_value")
00421           threshold["HIGH_ESUM_COMP_TRG"] = it->m_IntValue; 
00422         if(trig_name[itr->first].find("LOW_ESUM_COMP_TRG") != string::npos && it->m_Name == "DAC_half_value")
00423           threshold["LOW_ESUM_COMP_TRG"] = it->m_IntValue; 
00424         if(trig_name[itr->first].find("ALL_ESUM_COMP_TRG") != string::npos && it->m_Name == "DAC_total_value")
00425           threshold["ALL_ESUM_COMP_TRG"] = it->m_IntValue;
00426       }
00427     }
00428     trig_thres[itr->first] = threshold;
00429   }
00430   return 1;
00431 }

int DaqRunInfoSvc::findHWList ( DatabaseRecordVector  dbRV,
vector< string > &  dets,
vector< string > &  crates,
vector< string > &  ltbs,
vector< string > &  fees 
)

Definition at line 433 of file DaqRunInfoSvc.cc.

00434 {
00435   DatabaseRecordVector::iterator itr;
00436   for( itr = dbRV.begin(); itr != dbRV.end(); itr++){
00437     if( (*itr)["className"] == "ROSConfiguration" && (*itr)["name"] == "childObjectId_Detectors" )
00438       dets.push_back((*itr)["stringValue"]);
00439   }
00440   for( itr = dbRV.begin(); itr != dbRV.end(); itr++){
00441     if( (*itr)["className"] == "Detector" && (*itr)["name"] == "childObjectId_HW_Objects" && stringInVector((*itr)["objectId"], dets))
00442       crates.push_back((*itr)["stringValue"]);
00443   }
00444   for( itr = dbRV.begin(); itr != dbRV.end(); itr++){
00445     if( (*itr)["className"] == "Crate" && (*itr)["name"] == "childObjectId_LTB" && stringInVector((*itr)["objectId"], crates))
00446       ltbs.push_back((*itr)["stringValue"]);
00447     if( (*itr)["className"] == "Crate" && (*itr)["name"] == "childObjectId_Modules" && stringInVector((*itr)["objectId"], crates))
00448       fees.push_back((*itr)["stringValue"]);
00449   }
00450   return 1;
00451 }

string DaqRunInfoSvc::GetRunType ( const int  runNo  ) 

Definition at line 453 of file DaqRunInfoSvc.cc.

00454 {
00455   // find the runType
00456   stringstream ss_runNo;
00457   ss_runNo<<runNo;
00458   string sql = "select runType from DaqRunInfo where runNo = " + ss_runNo.str(); 
00459   DatabaseRecordVector runVec;
00460   m_dbSvc->query(m_dbName, sql, runVec);
00461   DatabaseRecord runRecord = runVec[0]; // runNo is unique
00462   string runType = runRecord["runType"];
00463 
00464   return runType;
00465 }

int DaqRunInfoSvc::stringInVector ( string  str,
vector< string >  vec 
)

Definition at line 467 of file DaqRunInfoSvc.cc.

00468 {
00469   // if not found, return 0; otherwise, return the index+1
00470   int index = 0;
00471   int i = 0;
00472   vector<string>::iterator it;
00473   for(it = vec.begin(); it!= vec.end(); it++){
00474     i++;
00475     if((*it) == str){
00476       index = i;
00477       break; 
00478     }
00479   }
00480   return index;
00481 }

| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:16:31 2011 for DaqRunInfoSvc by doxygen 1.4.7