00001 #define RootCnvSvc_CXX
00002 #include <iostream>
00003 #include "GaudiKernel/SmartIF.h"
00004 #include "GaudiKernel/SvcFactory.h"
00005
00006 #include "GaudiKernel/MsgStream.h"
00007 #include "GaudiKernel/ISvcLocator.h"
00008 #include "GaudiKernel/IDataProviderSvc.h"
00009 #include "GaudiKernel/IDataManagerSvc.h"
00010 #include "GaudiKernel/RegistryEntry.h"
00011 #include "GaudiKernel/GenericAddress.h"
00012
00013 #include "RawEvent/DigiEvent.h"
00014 #include "DstEvent/DstEvent.h"
00015 #include "McTruth/McEvent.h"
00016 #include "TrigEvent/TrigEvent.h"
00017 #include "HltEvent/HltEvent.h"
00018 #include "RootCnvSvc/RootInterface.h"
00019
00020 #include "RootCnvSvc/RootAddress.h"
00021 #include "RootCnvSvc/RootCnvSvc.h"
00022 #include "RootCnvSvc/RootEvtSelector.h"
00023
00024
00025 #include "RootCnvSvc/Dst/MdcDedxCnv.h"
00026 #include "RootCnvSvc/Dst/DstCnv.h"
00027 #include "RootCnvSvc/Digi/EmcDigiCnv.h"
00028 #include "RootCnvSvc/Mc/EmcMcHitCnv.h"
00029 #include "RootCnvSvc/Dst/EmcTrackCnv.h"
00030 #include "RootCnvSvc/EventCnv.h"
00031 #include "RootCnvSvc/Dst/ExtTrackCnv.h"
00032 #include "RootCnvSvc/Mc/McCnv.h"
00033 #include "RootCnvSvc/Mc/McParticleCnv.h"
00034 #include "RootCnvSvc/Digi/MdcDigiCnv.h"
00035 #include "RootCnvSvc/Dst/MdcKalTrackCnv.h"
00036 #include "RootCnvSvc/Mc/MdcMcHitCnv.h"
00037 #include "RootCnvSvc/Dst/MdcTrackCnv.h"
00038 #include "RootCnvSvc/Digi/MucDigiCnv.h"
00039 #include "RootCnvSvc/Mc/MucMcHitCnv.h"
00040 #include "RootCnvSvc/Dst/MucTrackCnv.h"
00041 #include "RootCnvSvc/Digi/DigiCnv.h"
00042 #include "RootCnvSvc/Digi/TofDigiCnv.h"
00043 #include "RootCnvSvc/Mc/TofMcHitCnv.h"
00044 #include "RootCnvSvc/Dst/TofTrackCnv.h"
00045 #include "RootCnvSvc/Digi/LumiDigiCnv.h"
00046
00047 #include "RootCnvSvc/Rec/RecMucTrackCnv.h"
00048 #include "RootCnvSvc/Rec/RecMdcTrackCnv.h"
00049 #include "RootCnvSvc/Rec/RecMdcHitCnv.h"
00050 #include "RootCnvSvc/Rec/RecMdcKalTrackCnv.h"
00051 #include "RootCnvSvc/Rec/RecMdcKalHelixSegCnv.h"
00052 #include "RootCnvSvc/Rec/RecMdcDedxCnv.h"
00053 #include "RootCnvSvc/Rec/RecMdcDedxHitCnv.h"
00054 #include "RootCnvSvc/Rec/RecTofTrackCnv.h"
00055 #include "RootCnvSvc/Rec/RecBTofCalHitCnv.h"
00056 #include "RootCnvSvc/Rec/RecETofCalHitCnv.h"
00057 #include "RootCnvSvc/Rec/RecMucRecHitCnv.h"
00058 #include "RootCnvSvc/Rec/RecEmcHitCnv.h"
00059 #include "RootCnvSvc/Rec/RecEmcClusterCnv.h"
00060 #include "RootCnvSvc/Rec/RecEmcShowerCnv.h"
00061 #include "RootCnvSvc/Rec/RecEvTimeCnv.h"
00062 #include "RootCnvSvc/Rec/RecExtTrackCnv.h"
00063 #include "RootCnvSvc/Rec/RecTrackCnv.h"
00064
00065 #include "RootCnvSvc/EvtRec/EvtRecCnv.h"
00066 #include "RootCnvSvc/EvtRec/EvtRecEventCnv.h"
00067 #include "RootCnvSvc/EvtRec/EvtRecTrackCnv.h"
00068 #include "RootCnvSvc/EvtRec/EvtRecPrimaryVertexCnv.h"
00069 #include "RootCnvSvc/EvtRec/EvtRecVeeVertexCnv.h"
00070 #include "RootCnvSvc/EvtRec/EvtRecPi0Cnv.h"
00071 #include "RootCnvSvc/EvtRec/EvtRecEtaToGGCnv.h"
00072 #include "RootCnvSvc/EvtRec/EvtRecDTagCnv.h"
00073 #include "RootCnvSvc/Rec/RecZddChannelCnv.h"
00074
00075
00076 #include "RootCnvSvc/Trig/TrigCnv.h"
00077 #include "RootCnvSvc/Trig/TrigDataCnv.h"
00078
00079 #include "RootCnvSvc/Hlt/HltCnv.h"
00080 #include "RootCnvSvc/Hlt/HltRawCnv.h"
00081 #include "RootCnvSvc/Hlt/HltInfCnv.h"
00082 #include "RootCnvSvc/Hlt/DstHltInfCnv.h"
00083
00084 #include "RootCnvSvc/EvtHeaderCnv.h"
00085 #include "RootCnvSvc/EvtNavigatorCnv.h"
00086
00087 #include <math.h>
00088
00089 using namespace std;
00090
00091
00092 static const char* rcsid = "$Id: RootCnvSvc.cxx,v 1.68 2015/06/17 03:12:16 dengzy Exp $";
00093
00094
00095
00096
00097
00098
00099
00100 RootCnvSvc::RootCnvSvc(const std::string& name, ISvcLocator* svc)
00101 : ConversionSvc(name, svc, ROOT_StorageType), m_minSplit(1), m_evtsel(0)
00102 {
00103 StatusCode sc;
00104 MsgStream log(msgSvc(), "RootCnvSvc");
00105 log << MSG::DEBUG << "RootCnvSvc::constructor" << endreq;
00106
00107 IService* isvc = 0;
00108 sc = serviceLocator()->getService ("RootEvtSelector", isvc, false);
00109 if (!sc.isSuccess()) sc = serviceLocator()->getService ("EventSelector", isvc, false);
00110 if (sc.isSuccess()) {
00111 sc = isvc->queryInterface(IID_IRootEvtSelector, (void**)&m_evtsel);
00112 }
00113 if(sc.isFailure()) {
00114 log << MSG::WARNING << "Unable to start event selector service within RootCnvSvc" << endreq;
00115 }
00116
00117 m_rootInterface= RootInterface::Instance(log);
00118 if (!m_rootInterface) log << MSG::ERROR << "Unable to start Root service within RootCnvSvc" << endreq;
00119
00120
00121
00122
00123 declareProperty("digiTreeName", m_dtreeName="Event");
00124
00125 declareProperty("digiRootInputFile",m_difileName);
00126
00127
00128
00129 declareProperty("digiRootOutputFile",m_dofileName = "");
00130
00131
00132 declareProperty("digiSplitMode", m_dsplitMode=m_minSplit);
00133
00134 declareProperty("digiBufferSize", m_dbufSize=3200000);
00135
00136 declareProperty("digiCompressionLevel", m_dcompressionLevel=1);
00137 declareProperty("selectFromTag", m_selectFromTag=0);
00138 declareProperty("tagInputFile", m_tagInputFile);
00139
00140
00141 }
00142
00143 StatusCode RootCnvSvc::initialize() {
00144
00145
00146
00147
00148
00149 MsgStream log(msgSvc(), name());
00150 log << MSG::DEBUG << "RootCnvSvc::initialize" << endreq;
00151 StatusCode status = ConversionSvc::initialize();
00152 if ( status.isSuccess() ) {
00153
00154 IDataProviderSvc *pIDP = 0;
00155
00156 status = service("EventDataSvc", pIDP, true);
00157 if ( status.isSuccess() ) {
00158 status = setDataProvider ( pIDP );
00159 }
00160 else {
00161 return status;
00162 }
00163
00164
00165
00166 status = addConverters();
00167 if ( !status.isSuccess() ) {
00168 log << MSG::ERROR << "Unable to add converters to the service" << endreq;
00169 return status;
00170 }
00171
00172
00173
00174
00175
00176 for (LeafMap::iterator k = m_leaves.begin(); k != m_leaves.end(); k++ ) {
00177 std::string path = (*k).first;
00178 for (LeafMap::iterator j = m_leaves.begin(); j != m_leaves.end(); j++ ) {
00179 std::string path2 = (*j).first;
00180 std::string pp = (*j).first.substr(0, (*j).first.rfind("/"));
00181 if ( path == pp && path != (*j).first ) {
00182 (*k).second->push_back((*j).second);
00183 }
00184 }
00185 }
00186 }
00187
00188
00189 status=initFiles();
00190
00191 m_rootInterface->setSelectFromTag(m_selectFromTag);
00192 m_rootInterface->setTagInputFile(m_tagInputFile);
00193
00194
00195 return status;
00196 }
00197
00198 StatusCode RootCnvSvc::finalize() {
00199 MsgStream log(msgSvc(), name());
00200 log << MSG::DEBUG << "RootCnvSvc::finalize" << endreq;
00201
00202 ConversionSvc::finalize();
00203
00204 for (LeafMap::iterator k = m_leaves.begin(); k != m_leaves.end(); k++ ) {
00205 delete (*k).second;
00206 }
00207 m_leaves.erase(m_leaves.begin(), m_leaves.end());
00208
00209 return m_rootInterface->finalize();
00210 }
00211
00212 StatusCode RootCnvSvc::initFiles () {
00213 MsgStream log(msgSvc(), name());
00214 log << MSG::DEBUG << "RootCnvSvc::initFiles" << endreq;
00215 StatusCode sc=StatusCode::SUCCESS;
00216
00217
00218
00219 setProperties();
00220
00221
00222 int nSize = m_difileName.size();
00223 log<<MSG::INFO<<"Root Input files "<<nSize<<endreq;
00224 if(nSize == 0){
00225 log<<MSG::INFO<<"Unable to find input file"<<endreq;
00226
00227 }
00228
00229 for(int i = 0;i<nSize;i++){
00230 facilities::Util::expandEnvVar(&m_difileName[i]);
00231 std::string s=m_difileName[i];
00232 std::vector<int> wildcardPos;
00233 for(int pos=0;pos<s.size();pos++) {
00234 pos=s.find_first_of('?',pos);
00235 if(pos!=-1) {
00236 wildcardPos.push_back(pos);
00237 }
00238 else{
00239 break;
00240 }
00241 }
00242 if(wildcardPos.size()!=0) {
00243 int nEnd=facilities::Util::catchOptionVal(&s)+1;
00244 int maxNo=pow(10.,(int)wildcardPos.size());
00245 if(nEnd!=0&&nEnd<maxNo) maxNo=nEnd;
00246 int nStart=facilities::Util::catchOptionVal(&s,0,"&(",")");
00247 int i=1;
00248 if(nStart!=-1) i=nStart;
00249 if(nStart>nEnd) log<<MSG::WARNING<<"file's StartNo>EndNo"<<endreq;
00250 for(;i<maxNo;i++){
00251 std::vector<int>::iterator it=wildcardPos.end();
00252 int id=i;
00253 while(it!=wildcardPos.begin()){
00254 it--;
00255 char c=id%10+48;
00256 id /=10;
00257 s.replace((*it),1,1,c);
00258 }
00259 if(access(s.c_str(),0)!=-1) {
00260 sc = m_rootInterface->addInput(m_dtreeName,s);
00261 if (sc.isFailure()) return sc;
00262 }
00263 }
00264 }
00265 else {
00266 sc = m_rootInterface->addInput(m_dtreeName,m_difileName[i]);
00267 if (sc.isFailure()) return sc;
00268 }
00269 }
00270
00271
00272
00273
00274
00275
00276
00277
00278 facilities::Util::expandEnvVar(&m_dofileName);
00279
00280
00281
00282 if (m_dsplitMode<m_minSplit) {
00283 log << MSG::WARNING << "RootCnvSvc::initFiles Recon splitlevel cant be lower than "<<m_minSplit<<", reset" << endreq;
00284 m_dsplitMode=m_minSplit;
00285 }
00286
00287 if( "" != m_dofileName ){
00288 sc=m_rootInterface->addOutput(m_dtreeName,m_dofileName,m_dsplitMode,m_dbufSize,m_dcompressionLevel);
00289 }else{
00290 log << MSG::WARNING << "No specified digiRootOutputFile!" << endreq;
00291 }
00292
00293 return sc;
00294 }
00295
00296
00297 StatusCode RootCnvSvc::declareObject(const Leaf& leaf) {
00298
00299
00300 MsgStream log(msgSvc(), name());
00301 log << MSG::DEBUG << "RootCnvSvc::declareObject " << leaf.path << " classid: " << leaf.clid << endreq;
00302 Leaf* ll = new Leaf(leaf);
00303 std::pair<LeafMap::iterator, bool> p = m_leaves.insert(LeafMap::value_type( leaf.path, ll) );
00304 if( p.second ) {
00305 return StatusCode::SUCCESS;
00306 }
00307 delete ll;
00308 return StatusCode::FAILURE;
00309 }
00310
00312 StatusCode RootCnvSvc::updateServiceState(IOpaqueAddress* pAddress) {
00313
00314
00315 MsgStream log(msgSvc(), name());
00316
00317 log << MSG::DEBUG << "RootCnvSvc::updateServiceState" << endreq;
00318
00319 StatusCode status = INVALID_ADDRESS;
00320 IRegistry* ent = pAddress->registry();
00321 if ( 0 != ent ) {
00322 SmartIF<IDataManagerSvc> iaddrReg(dataProvider());
00323
00324 status = StatusCode::SUCCESS;
00325 std::string path = ent->identifier();
00326 LeafMap::iterator itm = m_leaves.find(path);
00327 if ( itm != m_leaves.end() ) {
00328 Leaf* leaf = (*itm).second;
00329 if ( 0 != leaf ) {
00330 for ( Leaf::iterator il = leaf->begin(); il != leaf->end(); il++ ) {
00331 IOpaqueAddress* newAddr = 0;
00332 unsigned long ipars[2] = {0, 0};
00333 if (m_evtsel) ipars[0]=m_evtsel->getRecId();
00334
00335 std::string spars[3]={(*il)->path,(*il)->treename,(*il)->branchname};
00336
00337 StatusCode ir =createAddress(ROOT_StorageType,
00338 (*il)->clid,
00339 spars,
00340 ipars,
00341 newAddr);
00342 log << MSG::DEBUG << "RootCnvSvc::updateService " << " ***** " <<
00343 (*il)->clid << " ***** " << (*il)->path <<endreq;
00344
00345 if ( ir.isSuccess() ) {
00346 ir = iaddrReg->registerAddress((*il)->path, newAddr);
00347 if ( !ir.isSuccess() ) {
00348 newAddr->release();
00349 status = ir;
00350 }
00351 }
00352 }
00353 }
00354 }
00355 }
00356 return StatusCode::SUCCESS;
00357 }
00358
00359 StatusCode RootCnvSvc::queryInterface(const InterfaceID& riid, void** ppvInterface) {
00360
00361 if ( IID_IRootCnvSvc == riid ) {
00362 *ppvInterface = (RootCnvSvc*)this;
00363 }
00364 else {
00365
00366 return ConversionSvc::queryInterface(riid, ppvInterface);
00367 }
00368 addRef();
00369 return StatusCode::SUCCESS;
00370 }
00371
00372 StatusCode RootCnvSvc::createAddress(long int svc_type,
00373 const CLID& clid,
00374 const std::string* spars,
00375 const unsigned long* ipars,
00376 IOpaqueAddress*& refpAddress)
00377 {
00378 MsgStream log( msgSvc(), name() );
00379
00380 if (svc_type != repSvcType() ) {
00381 log << MSG::ERROR << "RootCnvSvc::bad storage type" << svc_type << endreq;
00382 return StatusCode::FAILURE;
00383 }
00384
00385 std::string path = spars[0];
00386 std::string treename = spars[1];
00387 std::string branchname = spars[2];
00388 int entry=ipars[0];
00389 if (path.size()==0) path="/Event";
00390 refpAddress = new RootAddress(ROOT_StorageType,
00391 clid,
00392 path,treename,branchname,entry);
00393 return StatusCode::SUCCESS;
00394 }
00395
00396
00397 StatusCode RootCnvSvc::commitOutput(const std::string& output, bool do_commit)
00398 {
00399
00400
00401
00402 MsgStream log( msgSvc(), name() );
00403 log << MSG::INFO << "RootCnvSvc::commitOutput starts." << endreq;
00404
00405 StatusCode sc=m_rootInterface->fillTrees();
00406 if (sc.isFailure())
00407 log << MSG::ERROR << "No Root tree was filled" << endreq;
00408
00409
00410 else{
00411 TObject* oEvtHeader = m_evtheaderCnv->getWriteObject();
00412 if (oEvtHeader) oEvtHeader->Clear();
00413 TObject* oEvtNavigator = m_evtnavigatorCnv->getWriteObject();
00414 if (oEvtNavigator) oEvtNavigator->Clear();
00415 TObject* o=m_dCnv->getWriteObject();
00416 if (o) o->Clear();
00417 TObject* oDst=m_dstCnv->getWriteObject();
00418 if (oDst) oDst->Clear();
00419 TObject* oMc=m_mcCnv->getWriteObject();
00420 if (oMc) oMc->Clear();
00421 TObject* oRecTrack=m_rectrackCnv->getWriteObject();
00422 if (oRecTrack) oRecTrack->Clear();
00423 TObject* oEvtRecEvent = m_evtRecCnv->getWriteObject();
00424 if (oEvtRecEvent) oEvtRecEvent->Clear();
00425 TObject* oTrig = m_trigCnv->getWriteObject();
00426 if(oTrig) oTrig->Clear();
00427 TObject* oHlt = m_hltCnv->getWriteObject();
00428 if(oHlt) oHlt->Clear();
00429 }
00430 m_common.clear();
00431
00432 return sc;
00433 }
00434
00435 StatusCode RootCnvSvc::createAddress(DataObject *obj,IOpaqueAddress*& newAddr) {
00436
00437
00438 MsgStream log(msgSvc(), name());
00439
00440
00441 log << MSG::DEBUG << "RootCnvSvc::createAddress"<<endreq;
00442
00443 StatusCode status = INVALID_ADDRESS;
00444 IRegistry* ent = obj->registry();
00445
00446 if ( 0 != ent ) {
00447 SmartIF<IDataManagerSvc> iaddrReg(dataProvider());
00448 std::string path = ent->identifier();
00449 LeafMap::iterator itm = m_leaves.find(path);
00450
00451
00452 if ( itm != m_leaves.end() ) {
00453 Leaf* leaf = (*itm).second;
00454 if ( 0 != leaf ) {
00455 std::string spars[3] ;
00456 spars[0]=path;
00457 spars[1]=leaf->treename;
00458 spars[2]=leaf->branchname;
00459
00460
00461 unsigned long ipars[2] ={0,0};
00462 if (m_evtsel) ipars[0]=m_evtsel->getRecId();
00463
00464 status=addressCreator()->createAddress(ROOT_StorageType,leaf->clid,spars,ipars,newAddr);
00465 if ( status.isSuccess() ) {
00466 status = iaddrReg->registerAddress((IRegistry*)0,path, newAddr);
00467 if ( !status.isSuccess() ) {
00468 newAddr->release();
00469 }
00470 }
00471 return StatusCode::SUCCESS;
00472 }
00473 }
00474 }
00475 return status;
00476 }
00477
00478 StatusCode RootCnvSvc::createAddress(std::string path,IOpaqueAddress*& newAddr) {
00479
00480
00481 MsgStream log(msgSvc(), name());
00482
00483 StatusCode status;
00484 LeafMap::iterator itm = m_leaves.find(path);
00485 SmartIF<IDataManagerSvc> iaddrReg(dataProvider());
00486 if ( itm != m_leaves.end() ) {
00487 Leaf* leaf = (*itm).second;
00488 if ( 0 != leaf ) {
00489 std::string spars[3] ;
00490 spars[0]=path;
00491 spars[1]=leaf->treename;
00492 spars[2]=leaf->branchname;
00493
00494 unsigned long ipars[2] = {0,0};
00495 if (m_evtsel) ipars[0]=m_evtsel->getRecId();
00496 status=addressCreator()->createAddress(ROOT_StorageType,leaf->clid,spars,ipars,newAddr);
00497 if ( status.isSuccess() ) {
00498 status = iaddrReg->registerAddress((IRegistry*)0,path, newAddr);
00499 if ( !status.isSuccess() ) {
00500 newAddr->release();
00501 }
00502 }
00503 return StatusCode::SUCCESS;
00504 }
00505 }
00506
00507
00508 return StatusCode::FAILURE;
00509 }
00510
00511
00513 StatusCode RootCnvSvc::addConverters () {
00514 MsgStream log(msgSvc(), name());
00515 declareObject(Leaf(EventModel::Dst::DstMdcDedxCol, MdcDedxCnv::classID(), "Event", "m_mdcDedxCol"));
00516 declareObject(Leaf(EventModel::Dst::Event, DstCnv::classID(), "Event", ""));
00517 declareObject(Leaf(EventModel::Digi::EmcDigiCol, EmcDigiCnv::classID(), "Event", "m_emcDigiCol"));
00518 declareObject(Leaf(EventModel::MC::EmcMcHitCol, EmcMcHitCnv::classID(), "Event", "m_emcMcHitCol"));
00519 declareObject(Leaf(EventModel::Dst::DstEmcShowerCol, EmcTrackCnv::classID(), "Event", "m_emcTrackCol"));
00520
00521 declareObject(Leaf("/Event", EventCnv::classID(), "", ""));
00522 declareObject(Leaf(EventModel::EventHeader, EvtHeaderCnv::classID(), "Event", "m_runId:m_eventId:m_time:m_eventTag:m_flag1:m_flag2"));
00523 declareObject(Leaf(EventModel::Navigator, EvtNavigatorCnv::classID(), "Event", "m_mcMdcMcHits:m_mcMdcTracks:m_mcEmcMcHits:m_mcEmcRecShowers"));
00524 declareObject(Leaf(EventModel::Dst::DstExtTrackCol, ExtTrackCnv::classID(), "Event", "m_extTrackCol"));
00525 declareObject(Leaf(EventModel::MC::Event, McCnv::classID(), "Event", ""));
00526 declareObject(Leaf(EventModel::MC::McParticleCol, McParticleCnv::classID(), "Event", "m_mcParticleCol"));
00527 declareObject(Leaf(EventModel::Digi::MdcDigiCol, MdcDigiCnv::classID(), "Event", "m_mdcDigiCol"));
00528 declareObject(Leaf(EventModel::Dst::DstMdcKalTrackCol, MdcKalTrackCnv::classID(), "Event", "m_mdcKalTrackCol"));
00529 declareObject(Leaf(EventModel::MC::MdcMcHitCol, MdcMcHitCnv::classID(), "Event", "m_mdcMcHitCol"));
00530 declareObject(Leaf(EventModel::Dst::DstMdcTrackCol, MdcTrackCnv::classID(), "Event", "m_mdcTrackCol"));
00531 declareObject(Leaf(EventModel::Digi::MucDigiCol, MucDigiCnv::classID(), "Event", "m_mucDigiCol"));
00532 declareObject(Leaf(EventModel::MC::MucMcHitCol, MucMcHitCnv::classID(), "Event", "m_mucMcHitCol"));
00533 declareObject(Leaf(EventModel::Dst::DstMucTrackCol, MucTrackCnv::classID(), "Event", "m_mucTrackCol"));
00534 declareObject(Leaf(EventModel::Digi::Event, DigiCnv::classID(), "Event", "m_fromMc"));
00535 declareObject(Leaf(EventModel::Digi::TofDigiCol, TofDigiCnv::classID(), "Event", "m_tofDigiCol"));
00536 declareObject(Leaf(EventModel::MC::TofMcHitCol, TofMcHitCnv::classID(), "Event", "m_tofMcHitCol"));
00537 declareObject(Leaf(EventModel::Dst::DstTofTrackCol, TofTrackCnv::classID(), "Event", "m_tofTrackCol"));
00538
00539 declareObject(Leaf(EventModel::Digi::LumiDigiCol, LumiDigiCnv::classID(), "Event", "m_lumiDigiCol"));
00540
00541 declareObject(Leaf(EventModel::Trig::Event, TrigCnv::classID(), "Event", ""));
00542 declareObject(Leaf(EventModel::Trig::TrigData, TrigDataCnv::classID(), "Event", "m_trigData"));
00543
00544 declareObject(Leaf(EventModel::Hlt::Event, HltCnv::classID(), "Event", ""));
00545 declareObject(Leaf(EventModel::Hlt::HltRawCol, HltRawCnv::classID(), "Event", "m_hltRawCol"));
00546 declareObject(Leaf(EventModel::Hlt::HltInf, HltInfCnv::classID(), "Event", "m_hltInf"));
00547 declareObject(Leaf(EventModel::Hlt::DstHltInf, DstHltInfCnv::classID(), "Event", "m_dstHltInf"));
00548
00549 declareObject(Leaf(EventModel::Recon::Event, RecTrackCnv::classID(), "Event", ""));
00550
00551 declareObject(Leaf(EventModel::Recon::RecMdcTrackCol, RecMdcTrackCnv::classID(), "Event", "m_recMdcTrackCol"));
00552 declareObject(Leaf(EventModel::Recon::RecMdcHitCol, RecMdcHitCnv::classID(), "Event", "m_recMdcHitCol"));
00553 declareObject(Leaf(EventModel::Recon::RecMdcKalTrackCol, RecMdcKalTrackCnv::classID(),"Event", "m_recMdcKalTrackCol"));
00554 declareObject(Leaf(EventModel::Recon::RecMdcKalHelixSegCol, RecMdcKalHelixSegCnv::classID(),"Event", "m_recMdcKalHelixSegCol"));
00555 declareObject(Leaf(EventModel::Recon::RecMdcDedxCol, RecMdcDedxCnv::classID(),"Event", "m_recMdcDedxCol"));
00556 declareObject(Leaf(EventModel::Recon::RecMdcDedxHitCol, RecMdcDedxHitCnv::classID(),"Event", "m_recMdcDedxHitCol"));
00557
00558 declareObject(Leaf(EventModel::Recon::RecEsTimeCol, RecEvTimeCnv::classID(),"Event", "m_recEvTimeCol"));
00559 declareObject(Leaf(EventModel::Recon::RecTofTrackCol, RecTofTrackCnv::classID(), "Event", "m_recTofTrackCol"));
00560 declareObject(Leaf(EventModel::Recon::RecBTofCalHitCol, RecBTofCalHitCnv::classID(), "Event", "m_recBTofCalHitCol"));
00561 declareObject(Leaf(EventModel::Recon::RecETofCalHitCol, RecETofCalHitCnv::classID(), "Event", "m_recETofCalHitCol"));
00562 declareObject(Leaf(EventModel::Recon::RecEmcHitCol, RecEmcHitCnv::classID(), "Event", "m_recEmcHitCol"));
00563 declareObject(Leaf(EventModel::Recon::RecEmcClusterCol, RecEmcClusterCnv::classID(), "Event", "m_recEmcClusterCol"));
00564 declareObject(Leaf(EventModel::Recon::RecEmcShowerCol, RecEmcShowerCnv::classID(), "Event", "m_recEmcShowerCol"));
00565 declareObject(Leaf(EventModel::Recon::RecMucTrackCol, RecMucTrackCnv::classID(), "Event", "m_recMucTrackCol"));
00566 declareObject(Leaf(EventModel::Recon::MucRecHitCol, RecMucRecHitCnv::classID(), "Event", "m_recMucHitCol"));
00567 declareObject(Leaf(EventModel::Recon::RecExtTrackCol, RecExtTrackCnv::classID(),"Event", "m_recExtTrackCol"));
00568 declareObject(Leaf(EventModel::Recon::RecZddChannelCol, RecZddChannelCnv::classID(), "Event", "m_recZddChannelCol"));
00569 declareObject(Leaf(EventModel::EvtRec::Event, EvtRecCnv::classID(), "Event", ""));
00570 declareObject(Leaf(EventModel::EvtRec::EvtRecEvent, EvtRecEventCnv::classID(), "Event", "m_evtRecEvent"));
00571 declareObject(Leaf(EventModel::EvtRec::EvtRecTrackCol, EvtRecTrackCnv::classID(), "Event", "m_evtRecTrackCol"));
00572 declareObject(Leaf(EventModel::EvtRec::EvtRecPrimaryVertex, EvtRecPrimaryVertexCnv::classID(), "Event", "m_evtRecPrimaryVertex"));
00573 declareObject(Leaf(EventModel::EvtRec::EvtRecVeeVertexCol, EvtRecVeeVertexCnv::classID(), "Event", "m_evtRecVeeVertexCol"));
00574 declareObject(Leaf(EventModel::EvtRec::EvtRecPi0Col, EvtRecPi0Cnv::classID(), "Event", "m_evtRecPi0Col"));
00575 declareObject(Leaf(EventModel::EvtRec::EvtRecEtaToGGCol, EvtRecEtaToGGCnv::classID(), "Event", "m_evtRecEtaToGGCol"));
00576 declareObject(Leaf(EventModel::EvtRec::EvtRecDTagCol, EvtRecDTagCnv::classID(), "Event", "m_evtRecDTagCol"));
00577
00578 return StatusCode::SUCCESS;
00579
00580 }