#include <TreeTofSimCnv.h>
Inheritance diagram for TreeTofSimDataCnv:
Public Types | |
typedef Ty1 | source |
typedef Ty2 | destination |
Public Member Functions | |
const CLID & | objType () const |
TreeTofSimDataCnv (ISvcLocator *svc) | |
virtual | ~TreeTofSimDataCnv () |
virtual long | repSvcType () const |
virtual StatusCode | initialize () |
virtual StatusCode | finalize () |
virtual StatusCode | createObj (IOpaqueAddress *addr, DataObject *&refpObject) |
ICalibTreeSvc * | getCalibTreeSvc () |
virtual StatusCode | createRoot (const std::string &fname, CalibData::CalibBase1 *pTDSObj) |
destination * | operator (const source &) const |
Static Public Member Functions | |
static const CLID & | classID () |
static const unsigned char | storageType () |
Protected Member Functions | |
virtual StatusCode | i_createObj (IOpaqueAddress *address, DataObject *&refpObject) |
virtual StatusCode | internalCreateObj (DataObject *&refpObject, IOpaqueAddress *address) |
virtual StatusCode | i_processObj (DataObject *pObject, IOpaqueAddress *address) |
In case there is additional work to do on the created object. | |
virtual StatusCode | fillRoot (CalibData::CalibBase *pTDSObj, TObject *pRootObj) |
void | setBaseInfo (CalibData::CalibBase1 *pObj) |
Another utility for derived classes to use. | |
virtual destination * | convert (const source &) const =0 |
Protected Attributes | |
ICalibTreeSvc * | m_treeSvc |
ICalibMetaCnvSvc * | m_metaSvc |
IInstrumentName * | m_instrSvc |
int | m_serNo |
int | m_runfrm |
int | m_runto |
TFile * | m_outFile |
TTree * | m_ttree |
TFile * | m_inFile |
TDirectory * | m_saveDir |
Friends | |
class | CnvFactory< TreeTofSimDataCnv > |
Definition at line 20 of file TreeTofSimCnv.h.
typedef Ty2 Converter< Ty1, Ty2 >::destination [inherited] |
Definition at line 19 of file Converter.h.
Definition at line 18 of file Converter.h.
TreeTofSimDataCnv::TreeTofSimDataCnv | ( | ISvcLocator * | svc | ) |
Definition at line 31 of file TreeTofSimCnv.cxx.
00031 : 00032 TreeCalBaseCnv(svc, CLID_Calib_TofSim) { 00033 00034 }
virtual TreeTofSimDataCnv::~TreeTofSimDataCnv | ( | ) | [inline, virtual] |
const CLID & TreeTofSimDataCnv::classID | ( | ) | [static] |
Definition at line 41 of file TreeTofSimCnv.cxx.
References CLID_Calib_TofSim.
00041 { 00042 return CLID_Calib_TofSim; 00043 }
virtual destination* Converter< Ty1, Ty2 >::convert | ( | const source & | ) | const [protected, pure virtual, inherited] |
StatusCode TreeCalBaseCnv::createObj | ( | IOpaqueAddress * | addr, | |
DataObject *& | refpObject | |||
) | [virtual, inherited] |
Create the transient representation of an object, given an opaque address. This and the following update method comprise the core functionality of calibration converters.
Definition at line 111 of file TreeCalBaseCnv.cxx.
References Bes_Common::DEBUG, TreeCalBaseCnv::internalCreateObj(), and msgSvc().
00112 { 00113 // StatusCode ret; 00114 00115 // first do the things we always need: 00116 // First string parameter of opaque address is file ident 00117 MsgStream log(msgSvc(), "TreeCalBaseCnv"); 00118 log << MSG::DEBUG<<"TreeCalBaseCnv::createObj( starting ...."<<endreq; 00119 // const std::string* par = addr->par(); 00120 00121 // std::string par0 = par[0]; 00122 00123 // return internalCreateObj(par0, refpObject, addr); 00124 return internalCreateObj(refpObject, addr); 00125 00126 }
StatusCode TreeCalBaseCnv::createRoot | ( | const std::string & | fname, | |
CalibData::CalibBase1 * | pTDSObj | |||
) | [virtual, inherited] |
Create ROOT file corresponding to TDS object input. Default implementation is to return an error. Must be separately implemented for each calibration type.
fname | Filename for output file | |
pTDSObj | Pointer to tds object to be converted |
Definition at line 89 of file TreeCalBaseCnv.cxx.
References calibUtil::ERROR, and msgSvc().
00090 { 00091 MsgStream log(msgSvc(), "TreeCalBaseCnv"); 00092 log << MSG::ERROR 00093 << "createRoot method not implemented for this calibration type" 00094 << endreq; 00095 return StatusCode::FAILURE; 00096 }
StatusCode TreeCalBaseCnv::fillRoot | ( | CalibData::CalibBase * | pTDSObj, | |
TObject * | pRootObj | |||
) | [protected, virtual, inherited] |
Given a pointer to a TDS object which can be cast to "our" type, fill in corresponding information in the corresponding root class
pTDSObj | Pointer to tds object to be converted | |
pRootObj | Pointer to destination root object |
Definition at line 100 of file TreeCalBaseCnv.cxx.
00101 { 00102 00103 // Get instrument name from InstrumentName service Now handled by 00104 // TreeCalBaseCnv 00105 // TString instr = TString((m_instrSvc->getInstrumentName()).c_str()); 00106 // pRootObj->setInstrument(instr); 00107 return StatusCode::SUCCESS; 00108 }
StatusCode TreeCalBaseCnv::finalize | ( | ) | [virtual, inherited] |
ICalibTreeSvc* TreeCalBaseCnv::getCalibTreeSvc | ( | ) | [inline, inherited] |
Definition at line 58 of file TreeCalBaseCnv.h.
References TreeCalBaseCnv::m_treeSvc.
00058 { 00059 return m_treeSvc; 00060 }
StatusCode TreeTofSimDataCnv::i_createObj | ( | IOpaqueAddress * | address, | |
DataObject *& | refpObject | |||
) | [protected, virtual] |
This creates the transient representation of an object from the corresponding ROOT object. This actually does the "new" operation and deals with the attributes of the node. This base class implementation does nothing; it should not normally be called because it doesn't correspond to any TCDS class. Instead, i_createObj of some derived class will be called.
fname | The ROOT file to be read in to be used to builds the object | |
refpObject | the object to be built |
Reimplemented from TreeCalBaseCnv.
Definition at line 45 of file TreeTofSimCnv.cxx.
References Bes_Common::DEBUG, msgSvc(), TreeAddress::pp(), CalibData::ETofSimBase::setAttenLength(), CalibData::BTofSimBase::setAttenLength(), CalibData::TofSimConstBase::setBarConstant(), CalibData::TofSimConstBase::setBarHighThres(), CalibData::TofSimConstBase::setBarLowThres(), CalibData::TofSimConstBase::setBarPMTGain(), CalibData::TofSimConstBase::setEndConstant(), CalibData::TofSimConstBase::setEndHighThres(), CalibData::TofSimConstBase::setEndLowThres(), CalibData::TofSimConstBase::setEndNoiseSwitch(), CalibData::TofSimConstBase::setEndPMTGain(), CalibData::ETofSimBase::setGain(), CalibData::BTofSimBase::setGain(), CalibData::ETofSimBase::setNoiseSmear(), and CalibData::BTofSimBase::setRatio().
00046 { 00047 00048 MsgStream log(msgSvc(), "TreeTofSimDataCnv"); 00049 log<<MSG::DEBUG<<"SetProperty"<<endreq; 00050 00051 TreeAddress* add = dynamic_cast<TreeAddress*>(addr); 00052 00053 DatabaseRecord *records=add->pp(); 00054 00055 TBufferFile *buf1 = new TBufferFile(TBuffer::kRead); 00056 TBufferFile *buf2 = new TBufferFile(TBuffer::kRead); 00057 TBufferFile *buf3 = new TBufferFile(TBuffer::kRead); 00058 00059 buf1->SetBuffer((*records)["BTofSim"],512000,kFALSE); 00060 buf2->SetBuffer((*records)["ETofSim"],512000,kFALSE); 00061 buf3->SetBuffer((*records)["SimConstants"],512000,kFALSE); 00062 00063 00064 std::cout<<" SftVer is "<<(*records)["SftVer"]; 00065 std::cout<<" CalVerSft is "<<(*records)["TofSimParVer"]; 00066 std::cout<<" File name is "<<(*records)["FileName"]<<std::endl; 00067 00068 00069 00070 TTree *btoftree= new TTree(); 00071 TTree *etoftree= new TTree(); 00072 TTree *btofcommontree = new TTree(); 00073 btoftree->Streamer(*buf1); 00074 etoftree->Streamer(*buf2); 00075 btofcommontree->Streamer(*buf3); 00076 00077 CalibData::BTofSimBase bTof; 00078 CalibData::ETofSimBase eTof; 00079 CalibData::TofSimConstBase tofbase; 00080 std::vector<CalibData::BTofSimBase> tmpbTof;//; = new vector<CalibData::bTofCalibBase>; 00081 std::vector<CalibData::ETofSimBase> tmpeTof; 00082 std::vector<CalibData::TofSimConstBase> tofbaseCol; 00083 // Read in the object 00084 int cnt; 00085 // read btoftree ------------------------------------------------------------ 00086 double AttenLength; 00087 double Gain; 00088 double Ratio; 00089 double NoiseSmear; 00090 btoftree -> SetBranchAddress("AttenLength", &AttenLength); 00091 btoftree -> SetBranchAddress("Gain", &Gain); 00092 btoftree -> SetBranchAddress("Ratio", &Ratio); 00093 int entries=btoftree->GetEntries(); 00094 for(cnt=0; cnt<entries; cnt++){ 00095 btoftree -> GetEntry(cnt); 00096 bTof.setGain(Gain); 00097 bTof.setRatio(Ratio); 00098 bTof.setAttenLength(AttenLength); 00099 tmpbTof.push_back(bTof); 00100 } 00101 //read etoftree 00102 etoftree -> SetBranchAddress("Gain", &Gain); 00103 etoftree -> SetBranchAddress("AttenLength", &AttenLength); 00104 etoftree -> SetBranchAddress("NoiseSmear", &NoiseSmear ); 00105 entries=etoftree->GetEntries(); 00106 for(cnt=0; cnt<entries; cnt++){ 00107 etoftree->GetEntry(cnt); 00108 eTof.setGain(Gain); 00109 eTof.setAttenLength(AttenLength); 00110 eTof.setNoiseSmear(NoiseSmear); 00111 tmpeTof.push_back(eTof); 00112 } 00113 //read SimConstants 00114 double BarConstant,BarPMTGain,BarHighThres,BarLowThres,EndConstant,EndPMTGain,EndHighThres,EndLowThres,EndNoiseSwitch; 00115 btofcommontree-> SetBranchAddress("BarConstant", &BarConstant); 00116 btofcommontree-> SetBranchAddress("BarPMTGain", &BarPMTGain); 00117 btofcommontree-> SetBranchAddress("BarHighThres", &BarHighThres); 00118 btofcommontree-> SetBranchAddress("BarLowThres", &BarLowThres); 00119 btofcommontree-> SetBranchAddress("EndConstant", &EndConstant); 00120 btofcommontree-> SetBranchAddress("EndPMTGain", &EndPMTGain); 00121 btofcommontree-> SetBranchAddress("EndHighThres", &EndHighThres); 00122 btofcommontree-> SetBranchAddress("EndLowThres", &EndLowThres); 00123 btofcommontree-> SetBranchAddress("EndNoiseSwitch", &EndNoiseSwitch); 00124 entries = btofcommontree->GetEntries(); 00125 for(cnt=0;cnt<entries;cnt++){ 00126 btofcommontree->GetEntry(cnt); 00127 tofbase.setBarLowThres(BarLowThres); 00128 tofbase.setBarHighThres(BarHighThres); 00129 tofbase.setEndLowThres(EndLowThres); 00130 tofbase.setEndHighThres(EndHighThres); 00131 tofbase.setBarPMTGain(BarPMTGain); 00132 tofbase.setEndPMTGain(EndPMTGain); 00133 tofbase.setBarConstant(BarConstant); 00134 tofbase.setEndConstant(EndConstant); 00135 tofbase.setEndNoiseSwitch(EndNoiseSwitch); 00136 tofbaseCol.push_back(tofbase); 00137 } 00138 00139 CalibData::TofSimData *tmpObject = new CalibData::TofSimData(&tofbaseCol,&tmpbTof,&tmpeTof); 00140 refpObject=tmpObject; 00141 delete btoftree; 00142 delete etoftree; 00143 delete btofcommontree; 00144 00145 return StatusCode::SUCCESS; 00146 00147 00148 }
StatusCode TreeCalBaseCnv::i_processObj | ( | DataObject * | pObject, | |
IOpaqueAddress * | address | |||
) | [protected, virtual, inherited] |
In case there is additional work to do on the created object.
Definition at line 190 of file TreeCalBaseCnv.cxx.
Referenced by TreeCalBaseCnv::internalCreateObj().
StatusCode TreeCalBaseCnv::initialize | ( | ) | [virtual, inherited] |
Definition at line 46 of file TreeCalBaseCnv.cxx.
References IID_ICalibMetaCnvSvc(), IID_ICalibTreeSvc(), IID_IInstrumentName(), TreeCalBaseCnv::m_instrSvc, TreeCalBaseCnv::m_metaSvc, and TreeCalBaseCnv::m_treeSvc.
00046 { 00047 StatusCode status = Converter::initialize(); 00048 00049 IDataProviderSvc* dp; 00050 00051 // I guess the service names are assigned in jobOptions? 00052 00053 /* serviceLocator()->getService ("CalibDataSvc", 00054 IID_IDataProviderSvc, 00055 (IInterface*&)dp);*/ 00056 serviceLocator()->getService ("CalibDataSvc", 00057 IDataProviderSvc::interfaceID(), 00058 (IInterface*&)dp); 00059 setDataProvider(dp); 00060 00061 // Locate the Root Conversion Service 00062 serviceLocator()->getService ("CalibTreeCnvSvc", 00063 IID_ICalibTreeSvc, 00064 (IInterface*&) m_treeSvc); 00065 00066 // Locate meta conversion service 00067 // Will anything need to be changed here to accommodate possibility 00068 // of two concrete implementations of ICalibMetaCnvSvc? Would 00069 // have different storage types. Could specify type desired 00070 // as job option. Ditto for name of class? 00071 serviceLocator()->getService("CalibMySQLCnvSvc", 00072 IID_ICalibMetaCnvSvc, 00073 (IInterface*&)m_metaSvc); 00074 00075 serviceLocator()->getService ("CalibDataSvc", 00076 IID_IInstrumentName, 00077 (IInterface*&)m_instrSvc); 00078 00079 return status; 00080 }
StatusCode TreeCalBaseCnv::internalCreateObj | ( | DataObject *& | refpObject, | |
IOpaqueAddress * | address | |||
) | [protected, virtual, inherited] |
This creates the transient representation of an object from the corresponding ROOT object it, then fills it and process it. This implementation actually only calls the i_* methods of the "right" converter to do the job; so the very first thing it does is get a pointer to the appropriate derived converter. Converters typically don't need to override this method but only to override/implement some of the i_* methods.
pRootObj | pointer to the ROOT object | |
refpObject | the object to be built | |
address | the opaque address for this object |
Definition at line 131 of file TreeCalBaseCnv.cxx.
References Bes_Common::DEBUG, calibUtil::ERROR, TreeAddress::getRunFrom(), TreeAddress::getRunTo(), TreeCalBaseCnv::i_createObj(), TreeCalBaseCnv::i_processObj(), TreeCalBaseCnv::m_runfrm, TreeCalBaseCnv::m_runto, msgSvc(), TreeCalBaseCnv::setBaseInfo(), and Bes_Common::WARNING.
Referenced by TreeCalBaseCnv::createObj().
00132 { 00133 00134 MsgStream log(msgSvc(), "TreeCalBaseCnv"); 00135 log << MSG::DEBUG<<"TreeCalBaseCnv::internalCreateObj( starting ..... "<<endreq; 00136 TreeCalBaseCnv* converter = this; 00137 CLID classId = address->clID(); 00138 00139 IConverter* conv = this->conversionSvc()->converter(classId); 00140 if (0 == conv) { 00141 log << MSG::WARNING 00142 << "No proper converter found for classID " << classId 00143 << ", the default converter" 00144 << " will be used. " << endreq; 00145 } else { 00146 converter = dynamic_cast <TreeCalBaseCnv*> (conv); 00147 if (0 == converter) { 00148 log << MSG::ERROR 00149 << "The converter found for classID " << classId 00150 << " was not a descendent of TreeCalBaseCnv as it should be " 00151 << "( was of type " << typeid (*converter).name() << "). " 00152 << "The default converter will be used" << endreq; 00153 converter = this; 00154 } 00155 } 00156 00157 TreeAddress* treeAddress = dynamic_cast <TreeAddress*> (address); 00158 m_runfrm = treeAddress->getRunFrom(); 00159 m_runto = treeAddress->getRunTo(); 00160 //m_runfrm =*( address->ipar()); 00161 //m_runto =*( address->ipar()+1); 00162 // m_runfrm = 100; 00163 // m_runto =1000; 00164 // creates an object for the node found 00165 StatusCode sc = converter->i_createObj(address, refpObject); 00166 if (sc.isFailure()) { 00167 return sc; 00168 } 00169 CalibData::CalibBase1* tmpObject = dynamic_cast <CalibData::CalibBase1*> (refpObject); 00170 setBaseInfo(tmpObject); 00171 // ends up the object construction 00172 sc = converter->i_processObj(refpObject, address); 00173 if (sc.isSuccess()) { 00174 log << MSG::DEBUG << "Successfully created calib. object " << endreq; 00175 } 00176 // closeRead(); 00177 return sc; 00178 }
const CLID & TreeTofSimDataCnv::objType | ( | ) | const |
Definition at line 37 of file TreeTofSimCnv.cxx.
References CLID_Calib_TofSim.
00037 { 00038 return CLID_Calib_TofSim; 00039 }
destination* Converter< Ty1, Ty2 >::operator | ( | const source & | ) | const [inline, inherited] |
virtual long TreeTofSimDataCnv::repSvcType | ( | ) | const [inline, virtual] |
Definition at line 34 of file TreeTofSimCnv.h.
References CALIBTREE_StorageType.
00034 { 00035 return CALIBTREE_StorageType; 00036 }
void TreeCalBaseCnv::setBaseInfo | ( | CalibData::CalibBase1 * | pObj | ) | [protected, inherited] |
Another utility for derived classes to use.
Another convenience for derived classes: sets information belonging to the calibration base class, namely validity interval and serial number.
Definition at line 196 of file TreeCalBaseCnv.cxx.
References Bes_Common::DEBUG, TreeCalBaseCnv::m_runfrm, TreeCalBaseCnv::m_runto, msgSvc(), CalibData::CalibBase1::setrunfrm(), and CalibData::CalibBase1::setrunto().
Referenced by TreeCalBaseCnv::internalCreateObj().
00196 { 00197 MsgStream log(msgSvc(), "TreeCalBaseCnv"); 00198 log << MSG::DEBUG<<"set the runfrm and runto Numbers in the converter"<<endreq; 00199 pObj->setrunfrm(m_runfrm); 00200 pObj->setrunto(m_runto); 00201 }
static const unsigned char TreeCalBaseCnv::storageType | ( | ) | [inline, static, inherited] |
Definition at line 62 of file TreeCalBaseCnv.h.
References CALIBTREE_StorageType.
00062 {return CALIBTREE_StorageType;}
friend class CnvFactory< TreeTofSimDataCnv > [friend] |
Definition at line 22 of file TreeTofSimCnv.h.
TFile* TreeCalBaseCnv::m_inFile [protected, inherited] |
Definition at line 212 of file TreeCalBaseCnv.h.
IInstrumentName* TreeCalBaseCnv::m_instrSvc [protected, inherited] |
ICalibMetaCnvSvc* TreeCalBaseCnv::m_metaSvc [protected, inherited] |
TFile* TreeCalBaseCnv::m_outFile [protected, inherited] |
Definition at line 209 of file TreeCalBaseCnv.h.
int TreeCalBaseCnv::m_runfrm [protected, inherited] |
Definition at line 205 of file TreeCalBaseCnv.h.
Referenced by TreeCalBaseCnv::internalCreateObj(), and TreeCalBaseCnv::setBaseInfo().
int TreeCalBaseCnv::m_runto [protected, inherited] |
Definition at line 206 of file TreeCalBaseCnv.h.
Referenced by TreeCalBaseCnv::internalCreateObj(), and TreeCalBaseCnv::setBaseInfo().
TDirectory* TreeCalBaseCnv::m_saveDir [protected, inherited] |
Definition at line 214 of file TreeCalBaseCnv.h.
int TreeCalBaseCnv::m_serNo [protected, inherited] |
Definition at line 204 of file TreeCalBaseCnv.h.
ICalibTreeSvc* TreeCalBaseCnv::m_treeSvc [protected, inherited] |
Definition at line 200 of file TreeCalBaseCnv.h.
Referenced by TreeCalBaseCnv::getCalibTreeSvc(), and TreeCalBaseCnv::initialize().
TTree* TreeCalBaseCnv::m_ttree [protected, inherited] |
Definition at line 210 of file TreeCalBaseCnv.h.