00001 #ifndef BESVISALG_H_
00002 #define BESVISALG_H_
00003
00004
00005 #include "GaudiKernel/Algorithm.h"
00006 #include "GaudiKernel/IDataProviderSvc.h"
00007 #include "GaudiKernel/IConversionSvc.h"
00008 #include "GaudiKernel/IDataManagerSvc.h"
00009 #include "GaudiKernel/IDataStoreAgent.h"
00010 #include "GaudiKernel/DataStoreItem.h"
00011
00012 #include "NetDataWriter/NetDataWriter.h"
00013
00014 #include "RootEventData/TRecTrackEvent.h"
00015 #include "RootEventData/TDigiEvent.h"
00016 #include "RootEventData/TJobInfo.h"
00017 #include "RootCnvSvc/commonData.h"
00018 #include "RootCnvSvc/RootInterface.h"
00019
00020 #include "RootCnvSvc/RootCnvSvc.h"
00021 #include "TTree.h"
00022 #include "TFile.h"
00023
00024
00025 using namespace std;
00026
00027 class TBossFullEvent;
00028
00030
00031
00032 class EventWriter : public Algorithm {
00033 public:
00034 EventWriter (const std::string& name, ISvcLocator* pSvcLocator);
00035 ~EventWriter();
00036 StatusCode initialize();
00037 StatusCode execute();
00038 StatusCode finalize();
00039
00040 private:
00041
00042
00043
00044 IDataManagerSvc *m_pDataManager;
00045 IDataProviderSvc *m_pDataProvider;
00046 IConversionSvc *m_pConversionSvc;
00047 IDataStoreAgent *m_pAgent;
00048 DataStoreItem *m_currentItem;
00049 RootInterface *m_pRootInterface;
00050 RootCnvSvc* m_cnvSvc;
00051 TRecTrackEvent *m_trkEvt;
00052 TDigiEvent *m_digiEvt;
00053 TMcEvent *m_mcEvt;
00054 THltEvent *m_hltEvt;
00055 TEvtHeader *m_evtHd;
00056 virtual std::string getJobOptions();
00057 virtual std::string getDecayOptions();
00058
00059 typedef std::vector<DataStoreItem*> Items;
00060 typedef std::vector<std::string> ItemNames;
00061
00062 commonData m_common;
00063 TFile* m_single_outputFiles;
00064 TTree* m_single_outputTrees;
00065 TTree* m_jobInfoTree;
00066 int st;
00067 string m_dofileName;
00068 string m_dofileName_1;
00069 Items m_itemList;
00070 ItemNames m_itemNames;
00071 StatusCode getSvc();
00072 void addItem(Items& itms, const std::string& descriptor);
00073 void clearItems(Items& items);
00074 DataStoreItem* findItem(const std::string& path);
00075 StatusCode collectObjects();
00076 std::vector<std::string> m_jobOptions;
00077 std::string m_bossVer;
00078 std::string m_decayOptions;
00079 TJobInfo* jobInfo;
00080
00081
00082 int m_mode;
00083 std::string m_svrName;
00084 TBossFullEvent *m_TFullEvt;
00085 NetDataWriter *m_writer;
00086 int m_bufsize;
00087 char *m_cbuf;
00088 };
00089
00090 #endif