/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/RootCnvSvc/RootCnvSvc-02-01-12/src/RootCnvSvc.cxx

Go to the documentation of this file.
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"//caogf
00017 #include "HltEvent/HltEvent.h"//fucd
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 // RCS Id for identification of object version
00092 static const char* rcsid = "$Id: RootCnvSvc.cxx,v 1.68 2015/06/17 03:12:16 dengzy Exp $";
00093 
00094 
00095 // Instantiation of a static factory class used by clients to create
00096 // instances of this service
00097 //static const SvcFactory<RootCnvSvc> s_RootCnvSvcFactory;
00098 //const ISvcFactory& RootCnvSvcFactory = s_RootCnvSvcFactory;
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     //Digi
00123   declareProperty("digiTreeName", m_dtreeName="Event"); //"Rec"->"Event" 
00124   
00125   declareProperty("digiRootInputFile",m_difileName);
00126   //if (m_difileName.size()==0){
00127   //  m_difileName.push_back("digi.root");
00128   //}
00129   declareProperty("digiRootOutputFile",m_dofileName = "");
00130 
00131   // Split mode for writing the TTree [0,99] 
00132   declareProperty("digiSplitMode", m_dsplitMode=m_minSplit);
00133      // Buffer size for writing ROOT data
00134   declareProperty("digiBufferSize", m_dbufSize=3200000);
00135     // ROOT default compression
00136   declareProperty("digiCompressionLevel", m_dcompressionLevel=1);
00137   declareProperty("selectFromTag", m_selectFromTag=0);
00138   declareProperty("tagInputFile", m_tagInputFile);
00139   //declareProperty("tagFileFormat", m_tagFileFormat=1);
00140   
00141 }
00142 
00143 StatusCode RootCnvSvc::initialize()     {
00144   // Purpose and Method:  Setup GLAST's Event Converter Service.
00145   //   Associate RootCnvSvc with the EventDataSvc
00146   //   Associate the list of known converters with this RootCnvSvc
00147   //   configure map of leaves
00148 
00149   MsgStream log(msgSvc(), name());
00150   log << MSG::DEBUG << "RootCnvSvc::initialize" << endreq;
00151   StatusCode status = ConversionSvc::initialize();
00152   if ( status.isSuccess() )   {
00153     //        ISvcLocator* svclocator = serviceLocator();  [unused for now]
00154     IDataProviderSvc *pIDP = 0;
00155     // Set event data service
00156     status = service("EventDataSvc", pIDP, true);
00157     if ( status.isSuccess() )   {
00158       status = setDataProvider ( pIDP );
00159     }
00160     else    {
00161       return status;
00162     }
00163 
00164     
00165     // Add converters to the service 
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     // Now we have to configure the map of leaves
00174     // Which should contain the association of converters with 
00175     // paths on the TDS
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   // get properties and tell RootInterface about files
00189   status=initFiles();
00190 
00191   m_rootInterface->setSelectFromTag(m_selectFromTag);
00192   m_rootInterface->setTagInputFile(m_tagInputFile);
00193   //m_rootInterface->setTagFileFormat(m_tagFileFormat);
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   // log << MSG::INFO<<"this is the end of RootCnvsvc finalize"<<endreq;
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   // Use the Job options service to set the Algorithm's parameters
00218   // This will retrieve parameters set in the job options file
00219     setProperties();
00220     
00221     //Read inpout files files from job options
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       //return StatusCode::FAILURE;
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     //facilities::Util::expandEnvVar(&m_difileName[0]);
00272     //sc = m_rootInterface->addInput(m_dtreeName,m_difileName[0]);
00273     //if (sc.isFailure()) return sc;
00274     
00275     
00276     //Digi
00277     //facilities::Util::expandEnvVar(&m_difileName);
00278     facilities::Util::expandEnvVar(&m_dofileName);
00279    // sc = m_rootInterface->addInput(m_dtreeName,m_difileName);
00280    // if (sc.isFailure()) return sc;
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   // Purpose and Method:  Callback from each of the individual converters that allows
00299   //  association of TDS path and converter.
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   // not sure about the use of recid or bank...
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     //       if ( 0 != iaddrReg )   {
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       // Interface is not directly availible: try out a base class
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     // objects must be cleared after fill
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     //    create address for this object
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     //    create address for this object
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     //declareObject(Leaf("/Event/Digi/LumiDigiCol", LumiDigiCnv::classID(), "Event", "m_lumiDigiCol"));
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   }

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