CalibMySQLCnvSvc Class Reference

--------------------------------------------------------------------------- More...

#include <CalibMySQLCnvSvc.h>

Inheritance diagram for CalibMySQLCnvSvc:

ICalibMetaCnvSvc List of all members.

Public Member Functions

virtual StatusCode queryInterface (const InterfaceID &riid, void **ppvInterface)
virtual StatusCode initialize ()
virtual StatusCode finalize ()
virtual StatusCode createObj (IOpaqueAddress *pAddress, DataObject *&refpObject)
 Create a transient representation from another rep of this object.
virtual StatusCode fillObjRefs (IOpaqueAddress *pAddress, DataObject *pObject)
 Resolve the references of the created transient object.
virtual StatusCode updateObj (IOpaqueAddress *pAddress, DataObject *pObject)
 Update a transient representation from another rep of this object.
virtual StatusCode updateObjRefs (IOpaqueAddress *pAddress, DataObject *pObject)
 Update the references of an updated transient object.
virtual StatusCode createRep (DataObject *pObject, IOpaqueAddress *&refpAddress)
 Convert a transient object to a requested representation.
virtual StatusCode fillRepRefs (IOpaqueAddress *pAddress, DataObject *pObject)
 Resolve the references of a converted object.
virtual StatusCode updateRep (IOpaqueAddress *pAddress, DataObject *pObject)
 Update a converted representation of a transient object.
virtual StatusCode updateRepRefs (IOpaqueAddress *pAddress, DataObject *pObject)
 Update the references of an already converted object.
virtual StatusCode createAddress (long svc_type, const CLID &clid, const std::string *par, const unsigned long *ip, IOpaqueAddress *&refpAddress)
 Create an address using explicit arguments to identify a single object.
virtual StatusCode createCalib (DataObject *&refpObject, const std::string &fullpath, const CLID &classID, IRegistry *entry=0)
virtual StatusCode updateCalib (DataObject *pObject, const std::string &fullpath, const CLID &classID, IRegistry *entry=0)
virtual StatusCode decodeDescription (const std::string &description, unsigned char &type)
 Decode the string storage type to enumerated storage type.
virtual calibUtil::MetadatagetMeta ()
 Handle to the MySQL metadata database.
StatusCode getSftParVer (std::string &SftVer, std::string &CalParVer, int &runfrm, int &runto, int RunNo, std::string BossRelease, std::string DataType)

Static Public Member Functions

static const InterfaceID & interfaceID ()
 Interface ID of this class.

Protected Member Functions

 CalibMySQLCnvSvc (const std::string &name, ISvcLocator *svc)
virtual ~CalibMySQLCnvSvc ()

Private Attributes

calibUtil::Metadatam_meta
 Handle for metadata access.
std::string m_host
 MySQL host, a job options parameter.
unsigned int m_calibLevelMask
bool m_useEventTime
 Use event time to select calibration? Normal state is TRUE.
facilities::Timestampm_enterTimeStart
facilities::Timestampm_enterTimeEnd
std::string m_enterTimeStartString
std::string m_enterTimeEndString
IInstrumentNamem_instrSvc
IDataProviderSvc * m_eventSvc
std::string m_dbName
std::string sft_ver
std::string cal_ver
std::string m_calPar [12]
std::string machine
std::string m_bossver [12]
std::string m_bossRelease
std::string m_flag [12]
IConversionSvc * m_detPersSvc
 Handle to the IConversionSvc interface of the DetectorPersistencySvc.
IDetDataSvc * m_detDataSvc
 Handle to the IDetDataSvc interface of the CalibDataSvc.
std::vector< std::stringm_qualityList
unsigned int m_qualityMask
bool m_crash
int m_MdcAlign_No
std::string m_dbStatus

Friends

class SvcFactory< CalibMySQLCnvSvc >
 Only factories can access protected constructors.

Detailed Description

---------------------------------------------------------------------------

A conversion service for GLAST calibration metadata database persistency. Allows to create and update condition data objects (i.e. DataObjects implementing IValidity).

Adapted from LHCb class DetCond/ConditionsDBCnvSvc by Andrea Valassi

Author:
J. Bogart
Date:
November 2002

Definition at line 33 of file CalibMySQLCnvSvc.h.


Constructor & Destructor Documentation

CalibMySQLCnvSvc::CalibMySQLCnvSvc ( const std::string name,
ISvcLocator *  svc 
) [protected]

Definition at line 65 of file CalibMySQLCnvSvc.cxx.

References cal_ver, m_bossRelease, m_bossver, m_calPar, m_crash, m_dbName, m_dbStatus, m_enterTimeEndString, m_enterTimeStartString, m_flag, m_host, m_MdcAlign_No, m_qualityList, m_useEventTime, sft_ver, and deljobs::string.

00066         : ConversionSvc (name, svc, MYSQL_StorageType)
00067                 , m_meta(0), m_useEventTime(true),m_enterTimeStart(0), m_enterTimeEnd(0),
00068                 m_qualityMask(0)
00069 {
00070         // declareProperty("Host", m_host = "202.122.37.69");
00071         declareProperty("Host", m_host = "bes3db2.ihep.ac.cn");
00072         declareProperty("UseEventTime", m_useEventTime = true);
00073         declareProperty("EnterTimeEnd", m_enterTimeEndString = std::string("") );
00074         declareProperty("EnterTimeStart", m_enterTimeStartString = std::string("") );
00075         //  declareProperty("DbName", m_dbName = std::string("calib") );
00076         declareProperty("DbName", m_dbName = std::string("offlinedb") );
00077         declareProperty("QualityList", m_qualityList);
00078         declareProperty("CrashOnError", m_crash = true);
00079         declareProperty("Sft_Ver",sft_ver);
00080         declareProperty("Cal_Ver",cal_ver);
00081         declareProperty("MdcFlag",m_flag[0]="default");
00082         declareProperty("DeDxFlag",m_flag[1]="default");
00083         declareProperty("EmcFlag",m_flag[2]="default");
00084         declareProperty("TofFlag",m_flag[3]="default");
00085         declareProperty("MucFlag",m_flag[4]="default");
00086         declareProperty("EsTimeFlag",m_flag[5]="default");
00087         declareProperty("EstTofFlag",m_flag[6]="default");
00088         declareProperty("MdcAlignFlag",m_flag[7]="default");
00089         declareProperty("TofQElecFlag",m_flag[8]="default");
00090         declareProperty("TofSimPFlag",m_flag[9]="default");
00091         declareProperty("DedxSimFlag",m_flag[10]="default");
00092         declareProperty("MdcDataFlag",m_flag[11]="default");
00093         declareProperty("MdcCalPar",m_calPar[0]="default");
00094         declareProperty("DeDxCalPar",m_calPar[1]="default");
00095         declareProperty("EmcCalPar",m_calPar[2]="default");
00096         declareProperty("TofCalPar",m_calPar[3]="default"); 
00097         declareProperty("MucCalPar",m_calPar[4]="default");
00098         declareProperty("EsTimeCalPar",m_calPar[5]="default");
00099         declareProperty("EstTofCalPar",m_calPar[6]="default");
00100         declareProperty("MdcAlignPar",m_calPar[7]="default");
00101         declareProperty("TofQElecPar",m_calPar[8]="default");
00102         declareProperty("TofSimPar",m_calPar[9]="default");
00103         declareProperty("DedxSimPar",m_calPar[10]="default");
00104         declareProperty("MdcDataConstVer",m_calPar[11]="default");
00105         declareProperty("MdcBossVer",m_bossver[0]="default");
00106         declareProperty("DeDxBossVer",m_bossver[1]="default");
00107         declareProperty("EmcBossVer",m_bossver[2]="default");
00108         declareProperty("TofBossVer",m_bossver[3]="default");
00109         declareProperty("MucBossVer",m_bossver[4]="default");
00110         declareProperty("EsTimeBossVer",m_bossver[5]="default");
00111         declareProperty("EstTofBossVer",m_bossver[6]="default");
00112         declareProperty("MdcAlignBossVer",m_bossver[7]="default");
00113         declareProperty("TofQElecBossVer",m_bossver[8]="default");
00114         declareProperty("TofSimBossVer",m_bossver[9]="default");
00115         declareProperty("DedxSimBossVer",m_bossver[10]="default");
00116         declareProperty("MdcDataConstBossVer",m_bossver[11]="default");
00117         declareProperty("Align_RunNo",m_MdcAlign_No=8093);
00118         declareProperty("Db_Status",m_dbStatus="OK");
00119         declareProperty("BossRelease",m_bossRelease="default");
00120 }

CalibMySQLCnvSvc::~CalibMySQLCnvSvc (  )  [protected, virtual]

Definition at line 122 of file CalibMySQLCnvSvc.cxx.

00122 { }


Member Function Documentation

StatusCode CalibMySQLCnvSvc::createAddress ( long  svc_type,
const CLID &  clid,
const std::string par,
const unsigned long *  ip,
IOpaqueAddress *&  refpAddress 
) [virtual]

Create an address using explicit arguments to identify a single object.

Overload ConversionSvc implementation of createAddress. Create an address using explicit arguments to identify a single object. Par[0] is full path in calibration TDS

Definition at line 367 of file CalibMySQLCnvSvc.cxx.

References calibUtil::ERROR, Bes_Common::INFO, and msgSvc().

00371                                                {
00372         // First check that requested address is of type MYSQL_StorageType
00373         MsgStream log(msgSvc(), "CalibMySQLCnvSvc" );
00374         if ( svc_type!= MYSQL_StorageType ) {
00375                 log << MSG::ERROR 
00376                         << "Cannot create addresses of type " << (int)svc_type 
00377                         << " which is different from " << (int)MYSQL_StorageType 
00378                         << endreq;
00379                 return StatusCode::FAILURE;
00380         }
00381         log << MSG::INFO
00382                 << " create address in CalibMySQLCnvSvc "
00383                 << endreq;
00384 
00385         refpAddress = new GenericAddress( MYSQL_StorageType, 
00386                         clid, 
00387                         par[0]);
00388 
00389         return StatusCode::SUCCESS;
00390 }

StatusCode CalibMySQLCnvSvc::createCalib ( DataObject *&  refpObject,
const std::string fullpath,
const CLID &  classID,
IRegistry *  entry = 0 
) [virtual]

Create a calib DataObject by calib type name, flavor and time. This method does not register DataObject in the transient data store. The string storage type is discovered at runtime in the Metadata dbs.

Implements ICalibMetaCnvSvc.

Definition at line 453 of file CalibMySQLCnvSvc.cxx.

References DatabaseRecordVector::clear(), Bes_Common::DEBUG, decodeDescription(), calibUtil::ERROR, f1, Bes_Common::FATAL, CalibData::CalibModelSvc::getCalibType(), calibUtil::Metadata::getReadDedxInfo(), calibUtil::Metadata::getReadDedxSimInfo(), calibUtil::Metadata::getReadEMCInfo(), calibUtil::Metadata::getReadEsTimeInfo(), calibUtil::Metadata::getReadEstTofInfo(), calibUtil::Metadata::getReadMdcAlignInfo(), calibUtil::Metadata::getReadMdcDataConstInfo(), calibUtil::Metadata::getReadMDCInfo(), calibUtil::Metadata::getReadMUCInfo(), calibUtil::Metadata::getReadTOFInfo(), calibUtil::Metadata::getReadTofQElecInfo(), calibUtil::Metadata::getReadTofSimInfo(), getSftParVer(), m_bossRelease, m_bossver, m_calPar, m_crash, m_dbStatus, m_detPersSvc, m_eventSvc, m_flag, m_meta, msgSvc(), calibUtil::Metadata::RETOk, runNo, TreeAddress::setRunFrom(), TreeAddress::setRunTo(), deljobs::string, and Bes_Common::WARNING.

Referenced by createObj().

00457 {
00458         MsgStream log(msgSvc(), "CalibMySQLCnvSvc" );
00459 
00460         // Look up calib object in the Metadata database
00461         std::string cType = CalibData::CalibModelSvc::getCalibType(fullpath);
00462 
00463         // ..and extra special munging for test
00464         if (std::string("Test") == cType.substr(0, 4)) {
00465                 cType = std::string("Test_Gen");
00466         }
00467 
00468         std::string testfile = std::string(getenv("CALIBMYSQLCNVROOT"))+"/share/test.root";
00469         TFile *f1=new TFile(testfile.c_str(),"read");
00470         unsigned int ser = 0;
00471         //runfrm,runto are the value from the table ***CalConst;runfrm1,runto1 are the value from the table CalVtxLumVer
00472         int runfrm,runfrm1;
00473         int runto,runto1;
00474         std::string flag="default";
00475         calibUtil::Metadata::eRet ret;
00476 
00477         MSG::Level msgLevel =  MSG::DEBUG;
00478 
00479         std::string physFmt = "UNK";
00480         std::string fmtVersion;
00481         std::string dataIdent;
00482 
00483         // Get the runNo of current event:
00484         SmartDataPtr<Event::EventHeader> evt(m_eventSvc,"/Event/EventHeader");
00485         int runNo=0;
00486         if( !evt ){
00487                 log << MSG::WARNING << "Unable to read the Event for TDS" << endreq;
00488                 //         return StatusCode::FAILURE;
00489         }   
00490         if( evt ){
00491                 if(cType!="TofCal"&&cType!="EstTofCal"&&cType!="TofSim"&&cType!="DedxSim") runNo = fabs(evt -> runNumber());
00492                 if(cType=="TofCal"||cType=="EstTofCal"||cType=="TofSim"||cType=="DedxSim") runNo = evt -> runNumber();
00493         }
00494         DatabaseRecordVector res;
00495 
00496         StatusCode st1;
00497 
00498         //TofCalConst
00499         if((cType=="TofCal")&&(m_bossver[3]== "default" ))
00500         {
00501                 std::string cType="Tof";
00502                 if(m_bossRelease=="default")
00503                         {
00504                                 log << MSG::FATAL << " Boss Release for TofCal not set!" << endreq;
00505                                 exit(1);
00506                                 
00507                         }
00508                 else
00509                         {
00510                         st1=getSftParVer(m_bossver[3],m_calPar[3],runfrm1,runto1,runNo,m_bossRelease,cType);
00511                         //cout<<cType<<" runfrm1,runto1 is:"<<runfrm1<<"::"<<runto1<<endl;
00512                         if (st1 .isFailure() ) 
00513                         {
00514                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
00515                                 return st1;                                                         
00516                         }
00517                         //cout<<"SftVer and CalParVer are:"<<sft_ver<<";"<<cal_ver<<endl;
00518                         ret = m_meta->getReadTOFInfo(ser,&runfrm,&runto,m_calPar[3],res,runNo,m_bossver[3]);
00519 
00520                 }
00521         }
00522         else if ((cType=="TofCal")&&(m_bossver[3]!= "default" ))
00523         {
00524     m_flag[3]="set";
00525                 flag=m_flag[3];
00526                 //cout<<"flag @create Tof is:"<<m_flag[3]<<endl;
00527                 ret = m_meta->getReadTOFInfo(ser,&runfrm,&runto,m_calPar[3],res,runNo,m_bossver[3]);
00528         }
00529 
00530 
00531         //EmcCalConst
00532         if((cType=="EmcCal")&&(m_bossver[2]== "default" ))   
00533         { 
00534                 std::string cType="Emc";
00535                 if(m_bossRelease=="default") 
00536                 {
00537                         log << MSG::FATAL << " Boss Release for EmcCal not set!" << endreq;
00538                         exit(1);
00539                 }
00540                 else{
00541 
00542                         st1=getSftParVer(m_bossver[2],m_calPar[2],runfrm1,runto1,runNo,m_bossRelease,cType);
00543                         //cout<<cType<<" runfrm1,runto1 is:"<<runfrm1<<"::"<<runto1<<endl;
00544                         //cout<<"flag @create Emc is:"<<flag<<endl;
00545                         if (st1 .isFailure() ) 
00546                         {
00547                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
00548                                 return st1; 
00549                         }
00550                         ret = m_meta->getReadEMCInfo(ser,&runfrm,&runto, m_calPar[2], res,runNo,m_bossver[2]);                    
00551                 }
00552         }
00553         else if((cType=="EmcCal")&&(m_bossver[2]!= "default" ))
00554         {
00555                 m_flag[2]="set";
00556                 flag=m_flag[2];
00557     //cout<<"flag @create Emc is:"<<m_flag[2]<<endl;
00558                 ret = m_meta->getReadEMCInfo(ser,&runfrm,&runto, m_calPar[2], res,runNo,m_bossver[2]);
00559         }
00560 
00561         //DedxCalConst
00562         if((cType=="DedxCal")&&(m_bossver[1]== "default" ))
00563         { 
00564                 std::string cType="Dedx";
00565                 if(m_bossRelease=="default") 
00566                 {
00567                         log << MSG::FATAL << " Boss Release for DedxCal not set!" << endreq;
00568                         exit(1);                                                                                             
00569                 }
00570                 else              
00571                 {
00572                         st1=getSftParVer(m_bossver[1],m_calPar[1],runfrm1,runto1,runNo,m_bossRelease,cType);
00573                         //cout<<cType<<" runfrm1,runto1 is:"<<runfrm1<<"::"<<runto1<<endl;
00574                         if (st1 .isFailure() ) 
00575                         {
00576                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
00577                                 return st1;                              
00578                         }
00579                         ret = m_meta->getReadDedxInfo(ser,&runfrm,&runto, m_calPar[1], res,runNo,m_bossver[1]);                 
00580                 }         
00581         }
00582         else if((cType=="DedxCal")&&(m_bossver[1]!= "default" ))   
00583         {
00584     m_flag[1]="set";
00585     flag=m_flag[1];
00586                 //cout<<"flag @create Dedx is:"<<m_flag[1]<<endl;
00587                 ret = m_meta->getReadDedxInfo(ser,&runfrm,&runto, m_calPar[1], res,runNo,m_bossver[1]);
00588         }
00589 
00590         //MdcCalConst
00591         if((cType=="MdcCal")&&(m_bossver[0]== "default" ))
00592         {
00593                 std::string cType="Mdc";
00594                 //cout<<"cType is"<<cType<<"m_bossver[0] is:"<<m_bossver[0]<<endl;
00595                 if(m_bossRelease=="default") 
00596                 {
00597                         log << MSG::FATAL << " Boss Release for MdcCal not set!" << endreq;
00598                         exit(1);      
00599                 }
00600                 else 
00601                 {
00602                         st1=getSftParVer(m_bossver[0],m_calPar[0],runfrm1,runto1,runNo,m_bossRelease,cType);
00603                         //cout<<cType<<" runfrm1,runto1 is:"<<runfrm1<<"::"<<runto1<<endl;
00604                         if (st1 .isFailure() ) 
00605                         {
00606                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
00607                                 return st1;                                                                            
00608                         }
00609                         ret = m_meta->getReadMDCInfo(ser,&runfrm,&runto,m_calPar[0],res,runNo,m_bossver[0]);                    
00610                 }        
00611         }
00612         else if((cType=="MdcCal")&&(m_bossver[0]!= "default"))      
00613         {
00614     m_flag[0]="set";
00615     flag=m_flag[0];
00616                 //cout<<"flag @create Mdc is:"<<m_flag[0]<<endl;
00617                 ret = m_meta->getReadMDCInfo(ser,&runfrm,&runto, m_calPar[0], res,runNo,m_bossver[0]);
00618 
00619         }
00620 
00621         //MucCalConst
00622         if((cType=="MucCal")&&(m_bossver[4]== "default" ))
00623         {
00624                 std::string cType="Muc";
00625                 if(m_bossRelease=="default") 
00626                 {
00627                         log << MSG::FATAL << " Boss Release for MucCal not set!" << endreq;
00628                         exit(1);                                                                                     
00629                 }
00630                 else 
00631                 {
00632                         st1=getSftParVer(m_bossver[4],m_calPar[4],runfrm1,runto1,runNo,m_bossRelease,cType);
00633                         if (st1 .isFailure() ) 
00634                         {
00635                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
00636                                 return st1;                                                                                                                                                                                        
00637                         }
00638                         ret = m_meta->getReadMUCInfo(ser,&runfrm,&runto, m_calPar[4], res,runNo,m_bossver[4]);                                                                                                                   
00639                 }                                                
00640         }
00641         else if((cType=="MucCal")&&(m_bossver[4]!= "default" ))
00642         {
00643     m_flag[4]="set";
00644     flag=m_flag[4];
00645                 //cout<<"flag @create Muc is:"<<m_flag[4]<<endl;
00646                 ret = m_meta->getReadMUCInfo(ser,&runfrm,&runto, m_calPar[4], res,runNo,m_bossver[4]);                                               
00647         }
00648 
00649         //EsTimeCal
00650         if((cType=="EsTimeCal")&&(m_bossver[5]== "default" ))
00651         {
00652                 std::string cType="EsTime";
00653                 if(m_bossRelease=="default") 
00654                 {
00655                         log << MSG::FATAL << " Boss Release for EsTimeCal not set!" << endreq;
00656                         exit(1);                                                                                                                              
00657                 }
00658                 else 
00659                 {
00660                         st1=getSftParVer(m_bossver[5],m_calPar[5],runfrm1,runto1,runNo,m_bossRelease,cType);
00661                         if (st1 .isFailure() ) 
00662                         {
00663                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
00664                                 return st1;                                                                                                                                                                                                                                                        
00665                         }
00666                         ret = m_meta->getReadEsTimeInfo(ser,&runfrm,&runto,m_calPar[5], res,runNo,m_bossver[5]);
00667                 }                                                                                  
00668         }
00669         else if((cType=="EsTimeCal")&&(m_bossver[5]!= "default" ))
00670         {
00671     m_flag[5]="set";
00672     flag=m_flag[5];
00673                 //cout<<"flag @create EsTime is:"<<m_flag[5]<<endl;
00674                 ret = m_meta->getReadEsTimeInfo(ser,&runfrm,&runto, m_calPar[5], res,runNo,m_bossver[5]);                                                                    
00675         }
00676 
00677         //MdcAlign
00678         if((cType=="MdcAlign")&&(m_bossver[7]== "default" ))
00679         {
00680                 std::string cType="MdcAlign";
00681                 if(m_bossRelease=="default") {
00682                         log << MSG::FATAL << " Boss Release for MdcAlignCal not set!" << endreq;
00683                         exit(1);
00684                 }
00685                 else {
00686                         st1=getSftParVer(m_bossver[7],m_calPar[7],runfrm1,runto1,runNo,m_bossRelease,cType);
00687                         if (st1 .isFailure() ) {
00688                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
00689                                 return st1;
00690                         }
00691                         ret = m_meta->getReadMdcAlignInfo(ser,&runfrm,&runto,m_calPar[7], res,runNo,m_bossver[7]);
00692                 }
00693         }
00694         else if((cType=="MdcAlign")&&(m_bossver[7]!= "default" ))
00695         {
00696     m_flag[7]="set";
00697     flag=m_flag[7];
00698                 //cout<<"flag @create MdcAlign is:"<<m_flag[7]<<endl;
00699                 ret = m_meta->getReadMdcAlignInfo(ser,&runfrm,&runto, m_calPar[7], res,runNo,m_bossver[7]);
00700         }
00701 
00702         //TofQElec
00703         if((cType=="TofQElec")&&(m_bossver[8]== "default" ))
00704         {
00705                 std::string cType="TofQElec";
00706                 if(m_bossRelease=="default") {
00707                         log << MSG::FATAL << " Boss Release for TofQElecCal not set!" << endreq;
00708                         exit(1);
00709                 }
00710                 else {
00711                         //cout<<"TofQElec @create"<<endl;
00712                         st1=getSftParVer(m_bossver[8],m_calPar[8],runfrm1,runto1,runNo,m_bossRelease,cType);
00713                         if (st1 .isFailure() ) {
00714                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
00715                                 return st1;
00716                         }
00717                         ret = m_meta->getReadTofQElecInfo(ser,&runfrm,&runto,m_calPar[8],res,runNo,m_bossver[8]);
00718                 }
00719         }
00720         else if((cType=="TofQElec")&&(m_bossver[8]!= "default" ))
00721         {
00722     m_flag[8]="set";
00723     flag=m_flag[8];
00724                 //cout<<"flag @create TofQElec is:"<<flag<<endl;
00725                 ret = m_meta->getReadTofQElecInfo(ser,&runfrm,&runto, m_calPar[8], res,runNo,m_bossver[8]);
00726         }
00727 
00728         //TofSim
00729         if((cType=="TofSim")&&(m_bossver[9]== "default" ))
00730         {
00731                 std::string cType="TofSim";
00732                 if(m_bossRelease=="default") {
00733                         log << MSG::FATAL << " Boss Release for TofSimCal not set!" << endreq;
00734                         exit(1);
00735                 }
00736                 else {
00737                         st1=getSftParVer(m_bossver[9],m_calPar[9],runfrm1,runto1,runNo,m_bossRelease,cType);
00738                         if (st1 .isFailure() ) {
00739                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
00740                                 return st1;
00741                         }
00742                         ret = m_meta->getReadTofSimInfo(ser,&runfrm,&runto, m_calPar[9], res,runNo,m_bossver[9]);
00743                 }
00744         }
00745         else if((cType=="TofSim")&&(m_bossver[9]!= "default" ))
00746         {
00747     m_flag[9]="set";
00748     flag=m_flag[9];
00749                 //cout<<"flag @create TofSim is:"<<m_flag[9]<<endl;
00750                 ret = m_meta->getReadTofSimInfo(ser,&runfrm,&runto, m_calPar[9], res,runNo,m_bossver[9]);
00751         }
00752 
00753         //DedxSim
00754         if((cType=="DedxSim")&&(m_bossver[10]== "default" ))
00755         {
00756                 std::string cType="DedxSim";
00757                 if(m_bossRelease=="default") {
00758                         log << MSG::FATAL << " Boss Release for DedxSimCal not set!" << endreq;
00759                         exit(1);
00760                 }
00761                 else {
00762                         st1=getSftParVer(m_bossver[10],m_calPar[10],runfrm1,runto1,runNo,m_bossRelease,cType);
00763                         if (st1 .isFailure() ) {
00764                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
00765                                 return st1;
00766                         }
00767                         ret = m_meta->getReadDedxSimInfo(ser,&runfrm,&runto,m_calPar[10], res,runNo,m_bossver[10]);
00768                 }
00769         }
00770         else if((cType=="DedxSim")&&(m_bossver[10]!= "default" ))
00771         {
00772     m_flag[10]="set";
00773     flag=m_flag[10];
00774                 //cout<<"flag @create DedxSim is:"<<m_flag[10]<<endl;
00775                 ret = m_meta->getReadDedxSimInfo(ser,&runfrm,&runto, m_calPar[10], res,runNo,m_bossver[10]);
00776         }
00777 
00778         //MdcDataConst
00779         if((cType=="MdcDataConst")&&(m_bossver[11]== "default" ))
00780         {
00781                 std::string cType="MdcData";
00782                 if(m_bossRelease=="default") {
00783                         log << MSG::FATAL << " Boss Release for MdcDataConst not set!" << endreq;
00784                         exit(1);
00785                 }
00786                 else {
00787                         st1=getSftParVer(m_bossver[11],m_calPar[11],runfrm1,runto1,runNo,m_bossRelease,cType);
00788                         if (st1 .isFailure() ) {
00789                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
00790                                 return st1;
00791                         }
00792                         ret = m_meta->getReadMdcDataConstInfo(ser,&runfrm,&runto,m_calPar[11], res,runNo,m_bossver[11]);
00793                 }
00794         }
00795         else if((cType=="MdcDataConst")&&(m_bossver[11]!= "default" ))
00796         {
00797     m_flag[11]="set";
00798     flag=m_flag[11];
00799                 //cout<<"flag @create MdcData is:"<<m_flag[11]<<endl;
00800                 ret = m_meta->getReadMdcDataConstInfo(ser,&runfrm,&runto, m_calPar[11], res,runNo,m_bossver[11]);
00801         }
00802 
00803         //EstTofCalConst
00804         if((cType=="EstTofCal")&&(m_bossver[6]== "default" ))
00805         {
00806                 std::string cType="EsTof";
00807                 if(m_bossRelease=="default") {
00808                         log << MSG::FATAL << " Boss Release for EstTofCal not set!" << endreq;
00809                         exit(1);
00810                 }
00811                 else {
00812                         st1=getSftParVer(m_bossver[6],m_calPar[6],runfrm1,runto1,runNo,m_bossRelease,cType);
00813                         if (st1 .isFailure() ) {
00814                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
00815                                 return st1;
00816                         }
00817                         ret = m_meta->getReadEstTofInfo(ser,&runfrm,&runto,m_calPar[6],res,runNo,m_bossver[6]);
00818                 }
00819         }
00820         else if((cType=="EstTofCal")&&(m_bossver[6]!= "default" ))
00821         {
00822     m_flag[6]="set";
00823     flag=m_flag[6];
00824                 //cout<<"flag @create EstTof is:"<<m_flag[6]<<endl;
00825                 ret = m_meta->getReadEstTofInfo(ser,&runfrm,&runto, m_calPar[6], res,runNo,m_bossver[6]);
00826         }
00827 
00828         if(ret!=calibUtil::Metadata::RETOk){
00829                 log <<  MSG::ERROR   << "no record in the database" << endreq;
00830                 exit(1);
00831         }
00832         int sz=res.size();
00833         DatabaseRecord* records1 = res[0];
00834 //      DatabaseRecord* records2 = res1[0];
00835  // runfrm1=records1->GetInt("RunFrom");
00836  // runto1=records1->GetInt("RunTo");
00837  // cout<<cType<<" runfrm1,runto1 is:"<<runfrm3<<":::"<<runto3<<endl;
00838         if(m_dbStatus=="OK"){
00839                 if(std::string((*records1)["Status"])!="OK") {
00840                         log<<MSG::FATAL<<"Status of type "<<cType<<" is "<< (*records1)["Status"]<<"  your setting is OK"<<endreq;
00841                         exit(1);
00842                 }
00843         }
00844 
00845         log << MSG::DEBUG << "dataIdent is:"<<dataIdent<< endreq;
00846         unsigned char storageType;
00847         physFmt="TREE";
00848         StatusCode sc = decodeDescription(physFmt, storageType);
00849 
00850 
00851         // Depending on value of eDataFmt, figure out which private
00852         // conversion service to invoke.  Pass dataIdent and fmtVersion
00853         // as part of the opaque address.  
00854         // Create temporary address for the relevant type and classID 
00855         log << MSG::DEBUG << "Creating an address of type "
00856                 << (int)storageType << " for class " << classID << endreq;
00857 
00858         IOpaqueAddress* tmpAddress;
00859         const std::string par[3] = {dataIdent, fullpath, fmtVersion};
00860         //const unsigned long ipar[2] = {int(runfrm),int(runto)};
00861         //log << MSG::DEBUG << "ipar is:"<<ipar[0]<<":"<<ipar[1]<<"ipar[1]"<<endreq;
00862         const unsigned long ipar[2] = {0,0};//yzhang fix unsigned bug for runfrom runto
00863 
00864         //  sc = addressCreator()->createAddress(storageType, classID,
00865         //                                       par, ipar, tmpAddress);
00866 
00867         tmpAddress = new TreeAddress(storageType, classID,*records1,ipar);
00868   //sscanf((*records2)["RunFrom"], "%d", &runfrm1);
00869   //sscanf((*records2)["RunTo"], "%d", &runto1);
00870         
00871         cout<<cType<<" runfrm,runto @CalVtxLumVer is:"<<runfrm1<<":::"<<runto1<<endl;
00872         sscanf((*records1)["RunFrom"], "%d", &runfrm);
00873         sscanf((*records1)["RunTo"], "%d", &runto);
00874   log << MSG::DEBUG << __LINE__<<" records @ runfrm is:"<<(*records1)["RunFrom"]<<" runto is:"<<(*records1)["RunTo"]<<" ser_no is:"<<ser<<endreq;
00875         //log << MSG::DEBUG <<__LINE__<< " runfrm is:"<<runfrm<<" runto is:"<<runto<<" ser_no is:"<<ser<<endreq;
00876  if(flag=="default")
00877  {
00878         if(runfrm1>runfrm)
00879         {
00880                 runfrm=runfrm1;
00881         }
00882         if(runto1<runto)
00883         {
00884                 runto=runto1;
00885         }
00886  }
00887  if(flag=="set")
00888  {
00889          flag="default";
00890  }
00891         log << MSG::DEBUG <<__LINE__<< " runfrm of max is:"<<runfrm<<" runto min is:"<<runto<<endreq;
00892         TreeAddress* treeAddress =  dynamic_cast <TreeAddress*> (tmpAddress);
00893         treeAddress->setRunFrom(runfrm);
00894         treeAddress->setRunTo(runto);
00895 //      log << MSG::DEBUG << __LINE__<<" records @ runfrm is:"<<(*records1)["RunFrom"]<<" runto is:"<<(*records1)["RunTo"]<<" ser_no is:"<<ser<<endreq;
00896 //      log << MSG::DEBUG <<__LINE__<< " runfrm is:"<<runfrm<<" runto is:"<<runto<<" ser_no is:"<<ser<<endreq;
00897         /*
00898                  if ( !sc.isSuccess() ) {
00899                  log << msgLevel  << "Persistency service could not create a new address" << endreq;
00900                  if (m_crash) {
00901                  log << msgLevel << std::endl << "Exiting... " << std::endl << endreq;
00902                  exit(1);
00903                  }
00904                  return sc;
00905                  }
00906                  */
00907         tmpAddress->addRef();
00908 
00909         // Set the transient store registry for the object associated to this address
00910         tmpAddress->setRegistry(entry);
00911 
00912         // Now create the object
00913         sc = m_detPersSvc->createObj(tmpAddress, refpObject);
00914         tmpAddress->release();
00915         if ( !sc.isSuccess() ) {
00916                 log << msgLevel
00917                         << "Persistency service could not create a new object" << endreq;
00918                 if (m_crash) {
00919                         log << msgLevel << std::endl << "Exiting... " << std::endl << endreq;
00920                         exit(1);
00921                 }
00922                 return sc;
00923         }
00924         //  std::cout<<" CalibMySQLCnvSvc  res.size()=="<<res.size()<<std::endl;
00925         res.clear();
00926         log << MSG::DEBUG << "New object successfully created" << endreq;
00927         return StatusCode::SUCCESS;
00928         f1->Close();
00929         delete f1;
00930 }

StatusCode CalibMySQLCnvSvc::createObj ( IOpaqueAddress *  pAddress,
DataObject *&  refpObject 
) [virtual]

Create a transient representation from another rep of this object.

Create a transient representation from another representation of an object. Overloaded from ConversionSvc because CalibMySQLCnvSvc has no converters. (The typical conversion service delegates this to an appropriate converter)

Definition at line 248 of file CalibMySQLCnvSvc.cxx.

References createCalib(), Bes_Common::DEBUG, calibUtil::ERROR, and msgSvc().

00249                                              {
00250 
00251         MsgStream log(msgSvc(), "CalibMySQLCnvSvc" );
00252 
00253 
00254         // Create the object according to calib type, flavor, time, instrument, clid.
00255         // Notice that the CalibMySQLCnvSvc has no converters of its own:
00256         // object creation is delegated to another CnvSvc via a temporary address
00257         // The IOpaqueAddress specifies calibration type and specific flavor.
00258         // The secondary storage type is always discovered dynamically
00259         StatusCode sc;
00260 
00261         sc = createCalib(refpObject,
00262                         pAddress->par()[0],
00263                         pAddress->clID(),
00264                         pAddress->registry() );
00265 
00266 
00267         if ( !sc.isSuccess() ) {
00268                 log << MSG::ERROR << "Could not create calib DataObject" << endreq;
00269         }
00270         log << MSG::DEBUG << "Method createObj exiting" << endreq;
00271         return sc;
00272 }

StatusCode CalibMySQLCnvSvc::createRep ( DataObject *  pObject,
IOpaqueAddress *&  refpAddress 
) [virtual]

Convert a transient object to a requested representation.

Convert a transient object to a requested representation. Not implemented. Overloaded from ConversionSvc because CalibMySQLCnvSvc has no converters.

Definition at line 324 of file CalibMySQLCnvSvc.cxx.

References msgSvc().

00325                                                    {
00326 
00327         MsgStream log(msgSvc(), "CalibMySQLCnvSvc" );
00328         // log << MSG::WARNING << "Method createRep is not implemented" << endreq;
00329         return StatusCode::SUCCESS;
00330 }

StatusCode CalibMySQLCnvSvc::decodeDescription ( const std::string description,
unsigned char &  type 
) [virtual]

Decode the string storage type to enumerated storage type.

Definition at line 1352 of file CalibMySQLCnvSvc.cxx.

References CALIBROOT_StorageType, CALIBTREE_StorageType, calibUtil::ERROR, msgSvc(), and deljobs::string.

Referenced by createCalib(), and updateCalib().

01354 {
01355         MsgStream log(msgSvc(), "CalibMySQLCnvSvc");
01356 
01357         //   description ="ROOT";
01358         if (description == std::string("XML")) {
01359                 type = XML_StorageType;
01360         }
01361         else if (description == std::string("ROOT")) {
01362                 type = CALIBROOT_StorageType;
01363         }
01364         else if (description == std::string("TREE")) {
01365                 type = CALIBTREE_StorageType;
01366         }
01367         else {       // unsupported
01368                 log << MSG::ERROR << "unsupported storage type " << description << endreq;
01369                 return StatusCode::FAILURE;
01370         }
01371         return StatusCode::SUCCESS;
01372 }

StatusCode CalibMySQLCnvSvc::fillObjRefs ( IOpaqueAddress *  pAddress,
DataObject *  pObject 
) [virtual]

Resolve the references of the created transient object.

Resolve the references of the created transient object. (Actually, don't, because this operation isn't supported, nor is it needed for the conversion service.) Overloaded from ConversionSvc because CalibMySQLCnvSvc has no converters.

Definition at line 278 of file CalibMySQLCnvSvc.cxx.

References msgSvc().

00279                                                {
00280         MsgStream log(msgSvc(), "CalibMySQLCnvSvc" );
00281         return StatusCode::SUCCESS;
00282 }

StatusCode CalibMySQLCnvSvc::fillRepRefs ( IOpaqueAddress *  pAddress,
DataObject *  pObject 
) [virtual]

Resolve the references of a converted object.

Resolve the references of a converted object. [actually, don't. Calib data doesn't have any inter-object references.] Overloaded from ConversionSvc because CalibMySQLCnvSvc has no converters.

Definition at line 336 of file CalibMySQLCnvSvc.cxx.

References msgSvc().

00337                                                {
00338         MsgStream log(msgSvc(), "CalibMySQLCnvSvc" );
00339         //  log << MSG::WARNING << "Method fillRepRefs is not implemented" << endreq;
00340         return StatusCode::SUCCESS;
00341 }

StatusCode CalibMySQLCnvSvc::finalize (  )  [virtual]

Definition at line 220 of file CalibMySQLCnvSvc.cxx.

References Bes_Common::DEBUG, m_meta, and msgSvc().

00221 {
00222         MsgStream log(msgSvc(), "CalibMySQLCnvSvc");
00223         log << MSG::DEBUG << "Finalizing" << endreq;
00224         delete m_meta;
00225         m_meta = 0;
00226         return ConversionSvc::finalize();
00227 }

calibUtil::Metadata * CalibMySQLCnvSvc::getMeta (  )  [virtual]

Handle to the MySQL metadata database.

Implements ICalibMetaCnvSvc.

Definition at line 1376 of file CalibMySQLCnvSvc.cxx.

References m_meta.

01376                                               {
01377         return m_meta;
01378 }

StatusCode CalibMySQLCnvSvc::getSftParVer ( std::string SftVer,
std::string CalParVer,
int &  runfrm,
int &  runto,
int  RunNo,
std::string  BossRelease,
std::string  DataType 
)

Definition at line 393 of file CalibMySQLCnvSvc.cxx.

References calibUtil::ERROR, DatabaseRecord::GetInt(), DatabaseRecord::GetString(), msgSvc(), and IDatabaseSvc::query().

Referenced by createCalib(), and updateCalib().

00401 {
00402         using namespace rdbModel;
00403         MsgStream log(msgSvc(), "CalibMySQLCnvSvc" );
00404         char stmt[300];
00405         int run_No =RunNo;
00406         MYSQL_RES *res_set;
00407         IDatabaseSvc* m_dbsvc;
00408         DatabaseRecordVector res;
00409         StatusCode sc=serviceLocator()->service("DatabaseSvc",m_dbsvc,true);
00410         if (sc .isFailure() ) {
00411                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
00412                 return sc;
00413         }
00414 
00415         const char* bossRelease = BossRelease.c_str();
00416         const char* dataType = DataType.c_str();
00417 
00418         sprintf(stmt,"select RunFrom,RunTo,SftVer,ParVer from CalVtxLumVer where BossRelease = '%s' and RunFrom <= %d and RunTo >= %d and DataType='%s' ",bossRelease,run_No,run_No,dataType);
00419 
00420         int row_no = m_dbsvc->query("offlinedb",stmt,res);
00421         if(row_no<1){
00422                 std::cout<<"ERROR:error searching with:"<<stmt<<std::endl;
00423                 exit(1);
00424         }
00425         if(row_no=1){
00426                 DatabaseRecord* records1 = res[0];
00427     runfrm=records1->GetInt("RunFrom");
00428     runto=records1->GetInt("RunTo");
00429                 //cout<<dataType<<" runfrm,runto in getSftParVer is:"<<runfrm<<"::::"<<runto<<endl;
00430                 SftVer=records1->GetString("SftVer");
00431                 CalParVer=records1->GetString("ParVer");
00432         }
00433         if(row_no>1){
00434                 cout<<"ERROR: "<<dataType<<" set overlapped run number in the table CalVtxLumVer"<<endl;
00435                 exit(1);
00436                 }
00437         return StatusCode::SUCCESS;
00438 }

StatusCode CalibMySQLCnvSvc::initialize (  )  [virtual]

Definition at line 124 of file CalibMySQLCnvSvc.cxx.

References Bes_Common::DEBUG, calibUtil::ERROR, Bes_Common::INFO, calibUtil::Metadata::LEVELDev, calibUtil::Metadata::LEVELProd, m_dbName, m_detPersSvc, m_eventSvc, m_host, m_meta, m_qualityList, m_qualityMask, msgSvc(), and toQualityMask().

00125 {
00126         // Initialize base class
00127         StatusCode sc = ConversionSvc::initialize();
00128         if ( !sc.isSuccess() ) return sc;
00129 
00130         MsgStream log(msgSvc(), "CalibMySQLCnvSvc" );
00131         log << MSG::INFO << "Specific initialization starting" << endreq;
00132 
00133         IDataProviderSvc* pCDS = 0;
00134         sc = serviceLocator()->getService ("CalibDataSvc",  IDataProviderSvc::interfaceID(), (IInterface*&)pCDS);
00135 
00136         if ( !sc.isSuccess() ) {
00137                 log << MSG::ERROR << "Could not locate CalibDataSvc" << endreq;
00138                 return sc;
00139         }
00140 
00141         sc = serviceLocator()->service("EventDataSvc", m_eventSvc, true);
00142         if (sc .isFailure() ) {
00143                 log << MSG::ERROR << "Unable to find EventDataSvc " << endreq;
00144                 return sc;
00145         }
00146 
00147         // Set the CalibDataSvc as data provider service
00148         sc = setDataProvider(pCDS);
00149         if ( !sc.isSuccess() ) {
00150                 log << MSG::ERROR << "Could not set data provider" << endreq;
00151                 return sc;
00152         }
00153 
00154         // Query the IAddressCreator interface of the detector persistency service
00155 
00156         sc = serviceLocator()->service 
00157                 ("DetectorPersistencySvc", m_detPersSvc, true);
00158         if ( !sc.isSuccess() ) {
00159                 log << MSG::ERROR 
00160                         << "Cannot locate IConversionSvc interface of DetectorPersistencySvc"
00161                         << endreq;
00162                 return sc;
00163         } else {
00164                 log << MSG::DEBUG 
00165                         << "Retrieved IConversionSvc interface of DetectorPersistencySvc"
00166                         << endreq;
00167         }
00168 
00169         IAddressCreator* iAddrCreator;
00170         sc = m_detPersSvc->queryInterface(IAddressCreator::interfaceID(),(void**) &iAddrCreator);
00171         //  sc = m_detPersSvc->queryInterface(IID_IAddressCreator,(void**) &iAddrCreator);
00172         if ( !sc.isSuccess() ) {
00173                 log << MSG::ERROR << "Could not locate CalibDataSvc" << endreq;
00174                 return sc;
00175         }
00176 
00177         sc = setAddressCreator(iAddrCreator);
00178         if ( !sc.isSuccess() ) {
00179                 log << MSG::ERROR       << "Cannot set the address creator" << endreq;
00180                 return sc;
00181         }
00182 
00183         // Get properties from the JobOptionsSvc
00184         sc = setProperties();
00185         if ( !sc.isSuccess() ) {
00186                 log << MSG::ERROR << "Could not set jobOptions properties" << endreq;
00187                 return sc;
00188         }
00189         log << MSG::DEBUG << "Properties were read from jobOptions" << endreq;
00190 
00191         // Translate list of calibration quality names to bit mask form used 
00192         // by calibUtil::Metadata::findBest     Defaults to PROD + DEV for now
00193         // (that was old fixed value)
00194         m_qualityMask = toQualityMask(m_qualityList);
00195         if (!m_qualityMask) {
00196                 m_qualityMask = calibUtil::Metadata::LEVELProd |
00197                         calibUtil::Metadata::LEVELDev;
00198         }
00199 
00200         // Make a calibUtil::Metadata instance 
00201         // Conceivably, could start up a different conversion service, depending 
00202         // on job options parameters, which would look very much like this one
00203         // except for having a different way to access metadata.
00204         m_meta = new calibUtil::Metadata(m_host, "*", m_dbName);
00205 
00206         if (!m_meta) {
00207                 log << MSG::ERROR << "Could not open connection to metadata dbs" << endreq;
00208                 return MSG::ERROR;
00209         }
00210         // Probably should get this value from job options. 
00211         // Now we do.  See m_qualityMask, m_qualityList
00212         //  m_calibLevelMask = calibUtil::Metadata::LEVELProd + 
00213         //    calibUtil::Metadata::LEVELDev;
00214 
00215         log << MSG::INFO << "Specific initialization completed" << endreq;
00216         return sc;
00217 }

static const InterfaceID& ICalibMetaCnvSvc::interfaceID (  )  [inline, static, inherited]

Interface ID of this class.

Definition at line 48 of file ICalibMetaCnvSvc.h.

References IID_ICalibMetaCnvSvc().

00048 { return IID_ICalibMetaCnvSvc; }

StatusCode CalibMySQLCnvSvc::queryInterface ( const InterfaceID &  riid,
void **  ppvInterface 
) [virtual]

Definition at line 230 of file CalibMySQLCnvSvc.cxx.

References IID_ICalibMetaCnvSvc().

00232 {
00233         if ( IID_ICalibMetaCnvSvc == riid )  {
00234                 // With the highest priority return the specific interface of this service
00235                 *ppvInterface = (ICalibMetaCnvSvc*)this;
00236         } else  {
00237                 // Interface is not directly available: try out a base class
00238                 return ConversionSvc::queryInterface(riid, ppvInterface);
00239         }
00240         addRef();
00241         return StatusCode::SUCCESS;
00242 }

StatusCode CalibMySQLCnvSvc::updateCalib ( DataObject *  pObject,
const std::string fullpath,
const CLID &  classID,
IRegistry *  entry = 0 
) [virtual]

Update a condition DataObject by This method does not register DataObject in the transient data store. The string storage type is discovered at runtime in the metadata dbs.

Implements ICalibMetaCnvSvc.

Definition at line 943 of file CalibMySQLCnvSvc.cxx.

References DatabaseRecordVector::clear(), Bes_Common::DEBUG, decodeDescription(), calibUtil::ERROR, f1, Bes_Common::FATAL, CalibData::CalibModelSvc::getCalibType(), calibUtil::Metadata::getReadDedxInfo(), calibUtil::Metadata::getReadDedxSimInfo(), calibUtil::Metadata::getReadEMCInfo(), calibUtil::Metadata::getReadEsTimeInfo(), calibUtil::Metadata::getReadEstTofInfo(), calibUtil::Metadata::getReadMdcAlignInfo(), calibUtil::Metadata::getReadMdcDataConstInfo(), calibUtil::Metadata::getReadMDCInfo(), calibUtil::Metadata::getReadMUCInfo(), calibUtil::Metadata::getReadTOFInfo(), calibUtil::Metadata::getReadTofQElecInfo(), calibUtil::Metadata::getReadTofSimInfo(), getSftParVer(), m_bossRelease, m_bossver, m_calPar, m_dbStatus, m_detPersSvc, m_eventSvc, m_flag, m_meta, msgSvc(), calibUtil::Metadata::RETOk, runNo, TreeAddress::setRunFrom(), TreeAddress::setRunTo(), deljobs::string, CalibData::CalibBase1::update(), and Bes_Common::WARNING.

Referenced by updateObj().

00947 {
00948         using CalibData::CalibBase;
00949 
00950         MsgStream log(msgSvc(), "CalibMySQLCnvSvc" );
00951         StatusCode status;
00952 
00953         std::string testfile = std::string(getenv("CALIBMYSQLCNVROOT"))+"/share/test.root";
00954         TFile *f1=new TFile(testfile.c_str(),"read");
00955 
00956 
00957         // Look up calib object in the Metadata database
00958         //std::string flavor = CalibData::CalibModelSvc::getFlavor(fullpath);
00959         std::string cType = CalibData::CalibModelSvc::getCalibType(fullpath);
00960 
00961         // ..and extra special munging for test
00962         if (std::string("Test") == cType.substr(0, 4)) {
00963                 cType = std::string("Test_Gen");
00964         }
00965 
00966         if (0 == pObject) {
00967                 log << MSG::ERROR << "There is no DataObject to update" << endreq;
00968                 return StatusCode::FAILURE;
00969         }
00970         // Is object an instance of the specified class?
00971         if(pObject->clID()!=6411&& classID!=6411){
00972                 if ( classID != pObject->clID() ) {
00973                         log << MSG::ERROR << "Update requested for clID " << classID
00974                                 << " while DataObject is of clID " 
00975                                 << pObject->clID() << endreq;
00976                         exit(1);
00977                         return StatusCode::FAILURE;
00978                 }
00979         }
00980 
00981         // check if already valid.  If so, we're done.
00982         //  Need access to IValidity interface
00983         CalibBase1* pBase = dynamic_cast<CalibBase1*>(pObject);
00984         if (pBase == 0) {
00985                 log << MSG::WARNING
00986                         << "Object to be updated is not a calib object! " << endreq;
00987                 return StatusCode::FAILURE;
00988         }
00989 
00990         // Following comes from createCalib.  Perhaps create and update
00991         // should be calling common utility since much of what they do is identical.
00992         unsigned int ser;
00993         int runfrm,runfrm1;
00994         int runto,runto1;
00995         calibUtil::Metadata::eRet ret;
00996 
00997         //  calibUtil::Metadata::eDataFmt physFmt = calibUtil::Metadata::FMTUnknown;
00998         std::string physFmt;
00999         std::string fmtVersion;
01000         std::string dataIdent;
01001         std::string flag="default";
01002         // Get the information needed to find and interpret the bulk data:
01003         //   * physical storage type
01004         //   * version of the physical format
01005         //   * pathname or similar identifying information so the data can be found
01006         //   maqm comment remove fmtversion :
01007         //    ret = m_meta->getReadInfo(ser, physFmt, fmtVersion, dataIdent);
01008 
01009         SmartDataPtr<Event::EventHeader> evt(m_eventSvc,"/Event/EventHeader");
01010         int runNo=0;
01011         if( !evt ){
01012                 log << MSG::WARNING << "Unable to read the Event for TDS" << endreq;
01013                 //     return StatusCode::FAILURE;
01014         }
01015 
01016         //  eRet ret;
01017 
01018         DatabaseRecordVector res;
01019         StatusCode st1;
01020         if( evt ){
01021                 if(cType!="TofCal"&&cType!="EstTofCal"&&cType!="TofSim"&&cType!="DedxSim") runNo = fabs(evt -> runNumber());
01022                 if(cType=="TofCal"||cType=="EstTofCal"||cType=="TofSim"||cType=="DedxSim") runNo = evt -> runNumber();
01023         }
01024 
01025         //TofCalConst
01026         if((cType=="TofCal"))
01027         {
01028                 std::string cType="Tof";
01029                 if(m_flag[3]=="default")
01030                 {
01031                         st1=getSftParVer(m_bossver[3],m_calPar[3],runfrm1,runto1,runNo,m_bossRelease,cType);
01032                         //cout<<cType<<" runfrm1,runto1 @update is:"<<runfrm1<<":::"<<runto1<<endl;
01033                         if (st1 .isFailure() ) 
01034                         {
01035                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
01036                                 return st1;                                                         
01037                         }
01038                 }
01039         
01040                 flag=m_flag[3];
01041 
01042     //cout<<"flag @update Tof is:"<<flag<<endl;
01043                         //cout<<"SftVer and CalParVer are:"<<sft_ver<<";"<<cal_ver<<endl;
01044                 ret = m_meta->getReadTOFInfo(ser,&runfrm,&runto,m_calPar[3],res,runNo,m_bossver[3]);
01045         }
01046 
01047         //EmcCalConst
01048         if((cType=="EmcCal"))   
01049         { 
01050                 std::string cType="Emc";
01051                 if(m_flag[2]=="default")
01052                 {
01053                         st1=getSftParVer(m_bossver[2],m_calPar[2],runfrm1,runto1,runNo,m_bossRelease,cType);
01054                         //cout<<cType<<" runfrm1,runto1 @update is:"<<runfrm1<<":::"<<runto1<<endl;
01055                         if (st1 .isFailure() ) 
01056                         {
01057                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
01058                                 return st1;                                
01059                         }
01060                 }
01061                 flag=m_flag[2];
01062                 //cout<<"flag @update Emc is:"<<m_flag[2]<<endl;
01063                 ret = m_meta->getReadEMCInfo(ser,&runfrm,&runto, m_calPar[2], res,runNo,m_bossver[2]);                    
01064         }
01065 
01066 
01067 
01068         //DedxCalConst
01069         if((cType=="DedxCal"))
01070         { 
01071                 std::string cType="Dedx";
01072                 if(m_flag[1]=="default")
01073                 {
01074                         st1=getSftParVer(m_bossver[1],m_calPar[1],runfrm1,runto1,runNo,m_bossRelease,cType);
01075                         //cout<<cType<<" runfrm1,runto1 @update is:"<<runfrm1<<":::"<<runto1<<endl;
01076                         if (st1 .isFailure() ) 
01077                         {
01078                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
01079                                 return st1;                              
01080                         }
01081                 }
01082                 flag=m_flag[1];
01083                 //cout<<"flag @update Dedx  is:"<<m_flag[1]<<endl;
01084                 ret = m_meta->getReadDedxInfo(ser,&runfrm,&runto, m_calPar[1], res,runNo,m_bossver[1]);                 
01085         }         
01086 
01087         //MdcCalConst
01088         if((cType=="MdcCal"))
01089         {
01090                 std::string cType="Mdc";
01091                 if(m_flag[0]=="default")
01092                 {
01093                         //cout<<"cType is"<<cType<<"m_bossver[0] is:"<<m_bossver[0]<<endl;
01094                         st1=getSftParVer(m_bossver[0],m_calPar[0],runfrm1,runto1,runNo,m_bossRelease,cType);
01095                         //cout<<cType<<" runfrm1,runto1 @update is:"<<runfrm1<<":::"<<runto1<<endl;
01096                         if (st1 .isFailure() ) 
01097                         {
01098                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
01099                                 return st1;                                                                            
01100                         }
01101                 }
01102                 flag=m_flag[0];
01103                 //cout<<"flag @update Mdc is:"<<m_flag[0]<<endl;
01104                 ret = m_meta->getReadMDCInfo(ser,&runfrm,&runto,m_calPar[0],res,runNo,m_bossver[0]);                    
01105         }        
01106 
01107         //MucCalConst
01108         if((cType=="MucCal"))
01109         {
01110                 std::string cType="Muc";
01111                 if(m_flag[4]=="default")
01112                 {
01113                         st1=getSftParVer(m_bossver[4],m_calPar[4],runfrm1,runto1,runNo,m_bossRelease,cType);
01114                         //cout<<cType<<" runfrm1,runto1 @update is:"<<runfrm1<<":::"<<runto1<<endl;
01115                         if (st1 .isFailure() ) 
01116                         {
01117                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
01118                                 return st1;                                                                                                                                                                                        
01119                         }
01120                 }
01121                 flag=m_flag[4];
01122                 //cout<<"flag @update Muc is:"<<m_flag[4]<<endl;
01123                 ret = m_meta->getReadMUCInfo(ser,&runfrm,&runto, m_calPar[4], res,runNo,m_bossver[4]);                                                                                                                   
01124         }                                                
01125 
01126         //EsTimeCal
01127         if((cType=="EsTimeCal"))
01128         {
01129                 std::string cType="EsTime";
01130                 if(m_flag[5]=="default")
01131                 {
01132                         st1=getSftParVer(m_bossver[5],m_calPar[5],runfrm1,runto1,runNo,m_bossRelease,cType);
01133                         //cout<<cType<<" runfrm1,runto1 @update is:"<<runfrm1<<":::"<<runto1<<endl;
01134                         if (st1 .isFailure() ) 
01135                         {
01136                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
01137                                 return st1;                                                                                                                                                                                                                                                        
01138                         }
01139                 }
01140                 flag=m_flag[5];
01141                 //cout<<"flag @update EsTime is:"<<m_flag[5]<<endl;
01142                 ret = m_meta->getReadEsTimeInfo(ser,&runfrm,&runto,m_calPar[5], res,runNo,m_bossver[5]);
01143         }                                                                                  
01144 
01145         //MdcAlign
01146         if((cType=="MdcAlign"))
01147         {
01148                 std::string cType="MdcAlign";
01149                 if(m_flag[7]=="default")
01150                 {
01151                         st1=getSftParVer(m_bossver[7],m_calPar[7],runfrm1,runto1,runNo,m_bossRelease,cType);
01152                         //cout<<cType<<" runfrm1,runto1 @update is:"<<runfrm1<<":::"<<runto1<<endl;
01153                         if (st1 .isFailure() ) {
01154                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
01155                                 return st1;
01156                         }
01157                 }
01158                 flag=m_flag[7];
01159                 //cout<<"flag @update MdcAlign is:"<<m_flag[7]<<endl;
01160                 ret = m_meta->getReadMdcAlignInfo(ser,&runfrm,&runto,m_calPar[7], res,runNo,m_bossver[7]);
01161         }
01162 
01163         //TofQElec
01164         if((cType=="TofQElec"))
01165         {
01166                 std::string cType="TofQElec";
01167                 if(m_flag[8]=="default")
01168                 {
01169                         //cout<<"TofQElec @update"<<endl;
01170                         st1=getSftParVer(m_bossver[8],m_calPar[8],runfrm1,runto1,runNo,m_bossRelease,cType);
01171                         //cout<<cType<<" runfrm1,runto1 @update is:"<<runfrm1<<":::"<<runto1<<endl;
01172                 }
01173                 flag=m_flag[8];
01174                 //cout<<"flag @update TofQElec is:"<<m_flag[8]<<endl;
01175                 ret = m_meta->getReadTofQElecInfo(ser,&runfrm,&runto,m_calPar[8],res,runNo,m_bossver[8]);
01176         }
01177 
01178         //TofSim
01179         if((cType=="TofSim"))
01180         {
01181                 std::string cType="TofSim";
01182                 if(m_flag[9]=="default")
01183                 {
01184                         st1=getSftParVer(m_bossver[9],m_calPar[9],runfrm1,runto1,runNo,m_bossRelease,cType);
01185                         //cout<<cType<<" runfrm1,runto1 @update is:"<<runfrm1<<":::"<<runto1<<endl;
01186                         if (st1 .isFailure() ) {
01187                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
01188                                 return st1;
01189                         }
01190                 }
01191                 flag=m_flag[9];
01192                 //cout<<"flag @update TofSim is:"<<m_flag[9]<<endl;
01193                 ret = m_meta->getReadTofSimInfo(ser,&runfrm,&runto, m_calPar[9], res,runNo,m_bossver[9]);
01194         }
01195 
01196         //DedxSim
01197         if((cType=="DedxSim"))
01198         {
01199                 std::string cType="DedxSim";
01200                 if(m_flag[10]=="default")
01201                 {
01202                         st1=getSftParVer(m_bossver[10],m_calPar[10],runfrm1,runto1,runNo,m_bossRelease,cType);
01203                         //cout<<cType<<" runfrm1,runto1 @update is:"<<runfrm1<<":::"<<runto1<<endl;
01204                         if (st1 .isFailure() ) {
01205                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
01206                                 return st1;
01207                         }
01208                 }
01209                 flag=m_flag[10];
01210                 //cout<<"flag @update DedxSim is:"<<m_flag[10]<<endl;
01211                 ret = m_meta->getReadDedxSimInfo(ser,&runfrm,&runto,m_calPar[10], res,runNo,m_bossver[10]);
01212         }
01213 
01214         //MdcDataConst
01215         if((cType=="MdcDataConst"))
01216         {
01217                 std::string cType="MdcData";
01218                 if(m_flag[11]=="default")
01219                 {
01220                         st1=getSftParVer(m_bossver[11],m_calPar[11],runfrm1,runto1,runNo,m_bossRelease,cType);
01221                         //cout<<cType<<" runfrm1,runto1 @update is:"<<runfrm1<<":::"<<runto1<<endl;
01222                         if (st1 .isFailure() ) {
01223                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
01224                                 return st1;
01225                         }
01226                 }
01227                 flag=m_flag[11];
01228                 //cout<<"flag @update MdcData is:"<<m_flag[11]<<endl;
01229                 ret = m_meta->getReadMdcDataConstInfo(ser,&runfrm,&runto,m_calPar[11], res,runNo,m_bossver[11]);
01230         }
01231 
01232         //EstTofCalConst
01233         if((cType=="EstTofCal"))
01234         {
01235                 std::string cType="EsTof";
01236                 if(m_flag[6]=="default")
01237                 {
01238                         st1=getSftParVer(m_bossver[6],m_calPar[6],runfrm1,runto1,runNo,m_bossRelease,cType);
01239                         //cout<<cType<<" runfrm1,runto1 @update is:"<<runfrm1<<":::"<<runto1<<endl;
01240                         if (st1 .isFailure() ) {
01241                                 log << MSG::ERROR << " Unable to find DatabaseSvc " << endreq;
01242                                 return st1;
01243                         }
01244                 }
01245                 flag=m_flag[6];
01246                 //cout<<"flag @update EstTof is:"<<m_flag[6]<<endl;
01247                 ret = m_meta->getReadEstTofInfo(ser,&runfrm,&runto,m_calPar[6],res,runNo,m_bossver[6]);
01248         }
01249 
01250         if(ret!=calibUtil::Metadata::RETOk){
01251                 log <<  MSG::ERROR   << "Error searching in the database" << endreq;
01252                 exit(1);
01253         }
01254 
01255         physFmt="TREE";
01256         unsigned char storageType;
01257         status = decodeDescription(physFmt, storageType);
01258 
01259         // Depending on value of eDataFmt, figure out which private
01260         // conversion service to invoke.  Pass dataIdent and fmtVersion
01261         // as part of the opaque address.  
01262         // Create temporary address for the relevant type and classID 
01263         log << MSG::DEBUG << "Creating an address of type " 
01264                 << (int)storageType << " for class " << classID << endreq;
01265 
01266         //   int sz=res.size();
01267         DatabaseRecord* records1 = res[0];
01268 
01269         if(m_dbStatus=="OK"){
01270                 if(std::string((*records1)["Status"])!="OK") {
01271                         log<<MSG::FATAL<<"the status of type  "<<cType<<" is "<< (*records1)["Status"]<<"  your setting is OK"<<endreq;
01272                         exit(1);
01273                 }
01274         }
01275 
01276 
01277         IOpaqueAddress* tmpAddress;
01278         //const unsigned long ipar[2] = {runfrm,runto};
01279         const unsigned long ipar[2] = {0,0};//yzhang fix unsigned bug for runfrom runto
01280 
01281         tmpAddress = new TreeAddress(storageType, classID,*records1,ipar);
01282   log << MSG::DEBUG <<__LINE__<<cType<<" runfrm,runto @CalVtxLumVer/update  is:"<<runfrm1<<":::"<<runto1<<endreq;
01283         sscanf((*records1)["RunFrom"], "%d", &runfrm);
01284         sscanf((*records1)["RunTo"], "%d", &runto);
01285         log << MSG::DEBUG << __LINE__<<" records @update runfrm is:"<<(*records1)["RunFrom"]<<" runto is:"<<(*records1)["RunTo"]<<" ser_no is:"<<ser<<endreq;
01286         if(flag=="default")
01287         {
01288                 if(runfrm1>runfrm)
01289                   {
01290                     runfrm=runfrm1;
01291                         }
01292     if(runto1<runto)
01293       {
01294        runto=runto1;
01295       } 
01296         }
01297         if(flag=="set")
01298         {
01299                 flag=="default";
01300         }
01301 
01302  log << MSG::DEBUG <<__LINE__<< " runfrm of max is:"<<runfrm<<" runto min is:"<<runto<<endreq;
01303         TreeAddress* treeAddress =  dynamic_cast <TreeAddress*> (tmpAddress);
01304         treeAddress->setRunFrom(runfrm);
01305         treeAddress->setRunTo(runto);
01306         //log << MSG::DEBUG << __LINE__<<" records runfrm is:"<<(*records1)["RunFrom"]<<" runto is:"<<(*records1)["RunTo"]<<" ser_no is:"<<ser<<endreq;
01307         //log << MSG::DEBUG <<__LINE__<< " runfrm is:"<<runfrm<<" runto is:"<<runto<<" ser_no is:"<<ser<<endreq;
01308 
01309         log << MSG::DEBUG << "Temporary address successfully created" << endreq;
01310         tmpAddress->addRef();
01311 
01312         // Set the transient store registry for the object associated to this address
01313         tmpAddress->setRegistry(entry);
01314 
01315         // Now update the object
01316         DataObject* pNewObject;
01317         status = m_detPersSvc->createObj(tmpAddress, pNewObject);
01318         tmpAddress->release();
01319         if ( !status.isSuccess() ) {
01320                 log << MSG::ERROR 
01321                         << "Persistency service could not create object" << endreq;
01322                 return status;
01323         }
01324 
01325         // Since DataObject::operator= operator is not virtual, dynamic cast first!
01326         // Overloaded virtual method Condition::update() must be properly defined!
01327         // The memory pointed to by the old pointer must contain the new object    
01328         // Note this dynamic cast only gets us part-way.  The object is
01329         // actually of some type derived from CalibBase.
01330         CalibBase1* pNewBase = dynamic_cast<CalibBase1*>(pNewObject);
01331         if  (0 == pNewBase) {
01332                 log << MSG::ERROR
01333                         << "Cannot update objects other than Calib objects: " 
01334                         << "update() must be defined!"
01335                         << endreq;
01336                 return StatusCode::FAILURE;
01337         }
01338 
01339         // Deep copy the new calib into the old DataObject.  To copy the *whole*
01340         // object, not just the CalibBase part, classes derived from CalibBase
01341         // must override update method.  
01342         // NOTE:  classes directly derived from CalibBase must call
01343         //        CalibBase::update in their own update method.
01344         pBase->update(*pNewBase, &log);  
01345         res.clear();
01346         f1->Close();
01347         delete f1;
01348         delete pNewBase;
01349         return StatusCode::SUCCESS;
01350 }

StatusCode CalibMySQLCnvSvc::updateObj ( IOpaqueAddress *  pAddress,
DataObject *  pObject 
) [virtual]

Update a transient representation from another rep of this object.

Update a transient representation from another representation of an object. Overloaded from ConversionSvc because CalibMySQLCnvSvc has no converters.

Definition at line 287 of file CalibMySQLCnvSvc.cxx.

References Bes_Common::DEBUG, calibUtil::ERROR, msgSvc(), and updateCalib().

00288                                            {
00289 
00290         //  using facilities::Timestamp;
00291 
00292         MsgStream log(msgSvc(), "CalibMySQLCnvSvc" );
00293 
00294         // Don't update when we're using enter time
00295         log << MSG::DEBUG << "CalibMySQLCnvSvc::updateObj starting ...."<<endreq;
00296 
00297         if( 0 == pObject ) {
00298                 log << MSG::ERROR << "There is no object to update" << endreq;
00299                 return StatusCode::FAILURE;
00300         } 
00301 
00302         StatusCode sc = updateCalib(pObject, pAddress->par()[0], 
00303                         pAddress->clID(), pAddress->registry() );
00304         if ( !sc.isSuccess() ) {
00305                 log << MSG::ERROR << "Could not update calib DataObject" << endreq;
00306                 return sc;
00307         }
00308 
00309         return StatusCode::SUCCESS;  
00310 }

StatusCode CalibMySQLCnvSvc::updateObjRefs ( IOpaqueAddress *  pAddress,
DataObject *  pObject 
) [virtual]

Update the references of an updated transient object.

Update the references of an updated transient object. [actually, don't. Calib data doesn't have any inter-object references.] Overloaded from ConversionSvc because CalibMySQLCnvSvc has no converters.

Definition at line 315 of file CalibMySQLCnvSvc.cxx.

References msgSvc().

00316                                                {
00317         MsgStream log(msgSvc(), "CalibMySQLCnvSvc" );
00318         return StatusCode::SUCCESS;
00319 }

StatusCode CalibMySQLCnvSvc::updateRep ( IOpaqueAddress *  pAddress,
DataObject *  pObject 
) [virtual]

Update a converted representation of a transient object.

Update a converted representation of a transient object. Overloaded from ConversionSvc because CalibMySQLCnvSvc has no converters.

Definition at line 346 of file CalibMySQLCnvSvc.cxx.

References msgSvc().

00347                                                {
00348         MsgStream log(msgSvc(), "CalibMySQLCnvSvc" );
00349         // log << MSG::WARNING << "Method updateRep is not implemented" << endreq;
00350         return StatusCode::SUCCESS;
00351 }

StatusCode CalibMySQLCnvSvc::updateRepRefs ( IOpaqueAddress *  pAddress,
DataObject *  pObject 
) [virtual]

Update the references of an already converted object.

Update the references of an already converted object. Overloaded from ConversionSvc because CalibMySQLCnvSvc has no converters. Don't do anything because calib objects have no inter-object references.

Definition at line 357 of file CalibMySQLCnvSvc.cxx.

References msgSvc().

00358                                                {
00359         MsgStream log(msgSvc(), "CalibMySQLCnvSvc");
00360         //log << MSG::WARNING << "Method updateRepRefs is not implemented" << endreq;
00361         return StatusCode::SUCCESS;
00362 }


Friends And Related Function Documentation

friend class SvcFactory< CalibMySQLCnvSvc > [friend]

Only factories can access protected constructors.

Definition at line 37 of file CalibMySQLCnvSvc.h.


Member Data Documentation

std::string CalibMySQLCnvSvc::cal_ver [private]

Definition at line 161 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc().

std::string CalibMySQLCnvSvc::m_bossRelease [private]

Definition at line 165 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc(), createCalib(), and updateCalib().

std::string CalibMySQLCnvSvc::m_bossver[12] [private]

Definition at line 164 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc(), createCalib(), and updateCalib().

unsigned int CalibMySQLCnvSvc::m_calibLevelMask [private]

How official does a calibration have to be in order to be acceptable Should default to calibUtil::Metadata::LEVELProd

Definition at line 143 of file CalibMySQLCnvSvc.h.

std::string CalibMySQLCnvSvc::m_calPar[12] [private]

Definition at line 162 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc(), createCalib(), and updateCalib().

bool CalibMySQLCnvSvc::m_crash [private]

Definition at line 179 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc(), and createCalib().

std::string CalibMySQLCnvSvc::m_dbName [private]

Definition at line 158 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc(), and initialize().

std::string CalibMySQLCnvSvc::m_dbStatus [private]

Definition at line 181 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc(), createCalib(), and updateCalib().

IDetDataSvc* CalibMySQLCnvSvc::m_detDataSvc [private]

Handle to the IDetDataSvc interface of the CalibDataSvc.

Definition at line 173 of file CalibMySQLCnvSvc.h.

IConversionSvc* CalibMySQLCnvSvc::m_detPersSvc [private]

Handle to the IConversionSvc interface of the DetectorPersistencySvc.

Definition at line 170 of file CalibMySQLCnvSvc.h.

Referenced by createCalib(), initialize(), and updateCalib().

facilities::Timestamp* CalibMySQLCnvSvc::m_enterTimeEnd [private]

Definition at line 151 of file CalibMySQLCnvSvc.h.

std::string CalibMySQLCnvSvc::m_enterTimeEndString [private]

Definition at line 154 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc().

facilities::Timestamp* CalibMySQLCnvSvc::m_enterTimeStart [private]

Following only used if m_useEventTime is FALSE. In this case search for calibration using enter-time instead

Definition at line 150 of file CalibMySQLCnvSvc.h.

std::string CalibMySQLCnvSvc::m_enterTimeStartString [private]

Definition at line 153 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc().

IDataProviderSvc* CalibMySQLCnvSvc::m_eventSvc [private]

Definition at line 156 of file CalibMySQLCnvSvc.h.

Referenced by createCalib(), initialize(), and updateCalib().

std::string CalibMySQLCnvSvc::m_flag[12] [private]

Definition at line 166 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc(), createCalib(), and updateCalib().

std::string CalibMySQLCnvSvc::m_host [private]

MySQL host, a job options parameter.

Definition at line 139 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc(), and initialize().

IInstrumentName* CalibMySQLCnvSvc::m_instrSvc [private]

Definition at line 155 of file CalibMySQLCnvSvc.h.

int CalibMySQLCnvSvc::m_MdcAlign_No [private]

Definition at line 180 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc().

calibUtil::Metadata* CalibMySQLCnvSvc::m_meta [private]

Handle for metadata access.

Definition at line 136 of file CalibMySQLCnvSvc.h.

Referenced by createCalib(), finalize(), getMeta(), initialize(), and updateCalib().

std::vector<std::string> CalibMySQLCnvSvc::m_qualityList [private]

Job option parameter; individual items may take on values "PROD", "DEV", "TEST", "SUPSED" (look only at first 3 characters)

Definition at line 177 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc(), and initialize().

unsigned int CalibMySQLCnvSvc::m_qualityMask [private]

Definition at line 178 of file CalibMySQLCnvSvc.h.

Referenced by initialize().

bool CalibMySQLCnvSvc::m_useEventTime [private]

Use event time to select calibration? Normal state is TRUE.

Definition at line 146 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc().

std::string CalibMySQLCnvSvc::machine [private]

Definition at line 163 of file CalibMySQLCnvSvc.h.

std::string CalibMySQLCnvSvc::sft_ver [private]

Definition at line 160 of file CalibMySQLCnvSvc.h.

Referenced by CalibMySQLCnvSvc().


Generated on Tue Nov 29 23:18:01 2016 for BOSS_7.0.2 by  doxygen 1.4.7