00001 #ifndef Fireworks_Core_FWFFService_h 00002 #define Fireworks_Core_FWFFService_h 00003 00004 00005 #include "Fireworks/Core/interface/CmsShowMainBase.h" 00006 #include "Fireworks/FWInterface/interface/FWFFHelper.h" 00007 #include <string> 00008 #include <Rtypes.h> 00009 #include <memory> 00010 00011 namespace edm 00012 { 00013 class ParameterSet; 00014 class ActivityRegistry; 00015 class Run; 00016 class Event; 00017 class EventSetup; 00018 } 00019 00020 class FWFFNavigator; 00021 class FWFFMetadataManager; 00022 00023 namespace fireworks 00024 { 00025 class Context; 00026 } 00027 00028 class TEveManager; 00029 class TEveElement; 00030 class TEveMagField; 00031 class TEveTrackPropagator; 00032 class TRint; 00033 00034 class FWFFService : public CmsShowMainBase 00035 { 00036 public: 00037 FWFFService(const edm::ParameterSet&, edm::ActivityRegistry&); 00038 virtual ~FWFFService(); 00039 00040 // ---------- const member functions --------------------- 00041 00042 // ---------- static member functions -------------------- 00043 00044 // ---------- member functions --------------------------- 00045 00046 void postBeginJob(); 00047 void postEndJob(); 00048 00049 void postBeginRun(const edm::Run&, const edm::EventSetup&); 00050 00051 void postProcessEvent(const edm::Event&, const edm::EventSetup&); 00052 00053 void display(const std::string& info=""); 00054 00055 TEveMagField* getMagField(); 00056 void setupFieldForPropagator(TEveTrackPropagator* prop); 00057 00058 virtual void checkPosition(); 00059 virtual void stopPlaying() {} 00060 virtual void autoLoadNewEvent() {} 00061 00062 void quit(); 00063 private: 00064 FWFFService(const FWFFService&); // stop default 00065 const FWFFService& operator=(const FWFFService&); // stop default 00066 00067 // ---------- member data -------------------------------- 00068 00069 std::auto_ptr<FWFFNavigator> m_navigator; 00070 std::auto_ptr<FWFFMetadataManager> m_metadataManager; 00071 std::auto_ptr<fireworks::Context> m_context; 00072 00073 FWFFHelper m_appHelper; 00074 TEveManager *m_EveManager; 00075 TRint *m_Rint; 00076 00077 TEveMagField *m_MagField; 00078 00079 00080 bool m_AllowStep; 00081 bool m_ShowEvent; 00082 bool m_firstTime; 00083 }; 00084 00085 #endif