/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/RootCnvSvc/RootCnvSvc-02-01-12/RootCnvSvc/RootEventBaseCnv.h

Go to the documentation of this file.
00001 #ifndef _RootEventBaseCnv_H
00002 #define _RootEventBaseCnv_H 1
00003 
00004 #include <vector>
00005 #include <string>
00006 #include <map>
00007 #include "TArrayS.h"
00008 #include "GaudiKernel/Converter.h"
00009 #include "GaudiKernel/CnvFactory.h"
00010 #include "GaudiKernel/IDataProviderSvc.h"
00011 
00012 #include "RootInterface.h"
00013 #include "RootCnvSvc.h"
00014 
00015 #include <iostream>
00016 
00017 class RootAddress;
00018 class DataObject;
00019 class TObject;
00020 class RootEvtSelector;
00021 
00022 extern const long int ROOT_StorageType;
00023 
00036 class RootEventBaseCnv : public Converter      {
00037 protected:
00038         
00039     RootCnvSvc*  m_cnvSvc;
00040     std::vector<RootCnvSvc::Leaf>   m_leaves;
00041 
00043     RootInterface* m_rootInterface;
00044     
00046     IDataProviderSvc* m_eds;
00047 
00049     int m_branchNr; 
00050     int m_branchNrDst;
00051     int m_branchNrMc;
00052     int m_branchNrRecon;
00053     int m_branchNrEvtRec;
00054     int m_branchNrEvtHeader;
00055     int m_branchNrEvtNavigator;
00056         
00058     TObject *m_objRead;
00059     
00061     CLID CLID_top;
00062     
00064     TArrayS *m_branchNumbers;
00065 
00067     std::string m_rootBranchname;
00069     std::string m_rootTreename;
00070    
00071     std::string m_currentFileName; 
00073     std::vector<void *> m_adresses;
00074 
00075     RootEvtSelector* m_evtsel;
00076     
00077 public:
00078     
00079     RootEventBaseCnv(const CLID& clid, ISvcLocator* svc);
00080     
00081     virtual ~RootEventBaseCnv() { };
00082     
00084     static const unsigned char storageType()      {
00085       return ROOT_StorageType;
00086     }
00087 
00088     virtual long repSvcType() const { 
00089       return ROOT_StorageType; 
00090     } 
00091 
00092     virtual StatusCode initialize();
00093     
00094     virtual StatusCode finalize();
00095     
00097     void declareObject(const std::string& fullPath, const CLID& clid, 
00098                                                  const std::string& treename, 
00099                                                  const std::string& branchname );
00100 
00102     virtual StatusCode createObj(IOpaqueAddress* addr,
00103                                      DataObject*& dat );   
00104 
00106     virtual StatusCode createRep(DataObject* pObject, 
00107                                 IOpaqueAddress*& refpAddress);
00108     
00110     virtual StatusCode fillRepRefs(IOpaqueAddress* pAddress,
00111                                        DataObject* pObject);
00112     
00114     virtual StatusCode fillObjRefs(IOpaqueAddress* pAddress,
00115                                        DataObject* pObject);
00116     
00118     virtual StatusCode DataObjectToTObject(DataObject* dat, 
00119                                           RootAddress* addr) =0;
00120     
00122     virtual StatusCode TObjectToDataObject(DataObject*& dat) =0;
00123 
00125     TObject* getReadObject() const  { return m_objRead;} 
00126 
00127 };
00128 
00129 
00130 #endif // _RootEventBaseCnv_H
00131 
00132 
00133 
00134 

Generated on Tue Nov 29 22:58:37 2016 for BOSS_7.0.2 by  doxygen 1.4.7