00001 #ifndef OnXSvc_OnXSvc_h
00002 #define OnXSvc_OnXSvc_h
00003
00004 #include <Lib/Interfaces/ISession.h>
00005
00006
00007 #include <GaudiKernel/Service.h>
00008 #include <GaudiKernel/IRunable.h>
00009 #include <GaudiKernel/SmartIF.h>
00010 #include <GaudiKernel/SmartDataPtr.h>
00011 #include <GaudiKernel/IDataManagerSvc.h>
00012 #include <GaudiKernel/DataObject.h>
00013
00014
00015 #include <OnXSvc/IUserInterfaceSvc.h>
00016
00017 template <typename T> class SvcFactory;
00018 class IAppMgrUI;
00019 class IDataProviderSvc;
00020 class IDataSelector;
00021 class ISoConversionSvc;
00022 class IHistogramSvc;
00023 class MsgStream;
00024
00025 namespace OnX { class Main;}
00026 namespace Slash {namespace UI {class IUI;}}
00027
00028 class OnXSvc
00029 :public Service
00030 ,virtual public IRunable
00031 ,virtual public IUserInterfaceSvc
00032 {
00033 public:
00034 virtual StatusCode queryInterface(const InterfaceID&,void**);
00035 public:
00036 virtual StatusCode initialize();
00037 virtual StatusCode finalize();
00038 public:
00039 virtual StatusCode run();
00040 public:
00041 virtual StatusCode visualize(const std::string&);
00042 virtual StatusCode visualize(const DataObject&);
00043 virtual StatusCode visualize(const AIDA::IHistogram&);
00044 virtual StatusCode visualize(const Gaudi::XYZPoint&);
00045 virtual StatusCode visualize(const std::vector<Gaudi::XYZPoint>&,RepType = LINES);
00046 virtual std::vector<std::string> dataChildren(const std::string&);
00047 virtual void ls(const std::string&,int depth = -1);
00048 virtual bool writeToString(const std::string&,std::string&);
00049 virtual void nextEvent();
00050 virtual IService* getService(const std::string&);
00051 virtual void clearDetectorStore();
00052 virtual StatusCode changeGeometry(const std::string&);
00053 virtual StatusCode changeColors(const std::string&);
00054 virtual void openEventFile(const std::string&);
00055 virtual std::string torgb(const std::string&);
00056 virtual void* topointer(const std::string&) const;
00057 virtual IAppMgrUI* appMgr() const;
00058 virtual SoPage* currentSoPage();
00059 virtual SoRegion* currentSoRegion();
00060 virtual const std::string& cuts() const;
00061 virtual IWidget* currentWidget();
00062 virtual void setSession(Slash::Core::ISession*);
00063 virtual Slash::Core::ISession* session();
00064 virtual Slash::Core::IWriter& printer();
00065 virtual void addType(Slash::Data::IAccessor*);
00066 virtual Slash::Data::IProcessor* typeManager();
00067 virtual Slash::Data::IAccessor* metaType();
00068 virtual std::vector<std::string> getHighlightedSoShapeNames();
00069 virtual std::vector<ContainedObject*> getHighlightedContainedObject();
00070 protected:
00071
00072 OnXSvc(const std::string&,ISvcLocator*);
00073 virtual ~OnXSvc();
00074 friend class SvcFactory<OnXSvc>;
00075 private:
00076 virtual void eventInfo();
00077 bool visitToXML(IDataProviderSvc*,
00078 SmartIF<IDataManagerSvc>&,
00079 SmartDataPtr<DataObject>&,
00080 std::string&);
00081 IDataProviderSvc* dataProvider(const std::string&);
00082 bool ls(IDataProviderSvc*,
00083 SmartIF<IDataManagerSvc>&,
00084 SmartDataPtr<DataObject>&,
00085 MsgStream&,
00086 int,int&);
00087 Slash::UI::IUI* findUI();
00088 private:
00089 IAppMgrUI* fAppMgrUI;
00090 ISoConversionSvc* fSoCnvSvc;
00091 IDataProviderSvc* fEventDataSvc;
00092 IDataProviderSvc* fDetectorDataSvc;
00093 IHistogramSvc* fHistogramSvc;
00094 ISession* fSession;
00095 bool fThreaded;
00096 std::string fToolkit;
00097 std::string fFile;
00098 int fVerboseLevel;
00099 bool fOutputToTerminal;
00100 std::string fCuts;
00101 MsgStream* fLog;
00102 OnX::Main* fOnXMain;
00103 Slash::Data::IProcessor* fTypeManager;
00104 std::vector<Slash::Data::IAccessor*> fTypes;
00105 Slash::Data::IAccessor* fMetaType;
00106 Slash::Core::IWriter* fLibPrinter;
00107 Slash::Core::IWriter* fGaudiPrinter;
00108 };
00109
00110 #endif