Go to the documentation of this file.00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <memory>
00022 #include <iostream>
00023 #include <sstream>
00024
00025 #include "TROOT.h"
00026 #include "TSystem.h"
00027 #include "TApplication.h"
00028 #include "TError.h"
00029
00030
00031 #include "FWCore/Framework/interface/Frameworkfwd.h"
00032 #include "FWCore/Framework/interface/EDAnalyzer.h"
00033
00034 #include "FWCore/Framework/interface/MakerMacros.h"
00035 #include "Fireworks/Geometry/interface/DisplayPluginFactory.h"
00036
00037
00038
00039
00040
00041 using namespace fireworks::geometry;
00042
00043 class DisplayGeom : public edm::EDAnalyzer {
00044
00045 public:
00046 explicit DisplayGeom(const edm::ParameterSet&);
00047 ~DisplayGeom();
00048
00049 private:
00050 virtual void beginJob() ;
00051 virtual void analyze(const edm::Event&, const edm::EventSetup&);
00052 virtual void endJob() ;
00053
00054
00055 int level_;
00056 bool verbose_;
00057 TApplication* app_;
00058 DisplayPlugin* plugin_;
00059 };
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 DisplayGeom::DisplayGeom(const edm::ParameterSet& iConfig):
00073 level_(iConfig.getUntrackedParameter<int>("level",4)),
00074 verbose_(iConfig.getUntrackedParameter<bool>("verbose",false)),
00075 app_(0),
00076 plugin_(0)
00077 {
00078
00079
00080 std::cout <<" is batch "<<gROOT->IsBatch()<<std::endl;
00081 std::cout <<" display "<<gSystem->Getenv("DISPLAY")<<std::endl;
00082
00083 const char* dummyArgvArray[] = {"cmsRun"};
00084 char** dummyArgv = const_cast<char**>(dummyArgvArray);
00085 int dummyArgc = 1;
00086 app_ = new TApplication("App", &dummyArgc, dummyArgv);
00087 assert(TApplication::GetApplications()->GetSize());
00088
00089 gROOT->SetBatch(kFALSE);
00090
00091
00092 std::cout<<"calling NeedGraphicsLibs()"<<std::endl;
00093 TApplication::NeedGraphicsLibs();
00094
00095 DisplayPluginFactory* factory = DisplayPluginFactory::get();
00096 plugin_ = factory->create("EveDisplayPlugin");
00097 }
00098
00099
00100 DisplayGeom::~DisplayGeom()
00101 {
00102
00103
00104
00105
00106 delete plugin_;
00107 }
00108
00109
00110
00111
00112
00113
00114
00115 void
00116 DisplayGeom::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00117 {
00118 std::cout << "In the DisplayGeom::analyze method..." << std::endl;
00119 using namespace edm;
00120
00121
00122 ErrorHandlerFunc_t old = SetErrorHandler(DefaultErrorHandler);
00123
00124 plugin_->run(iSetup);
00125 app_->Run(kTRUE);
00126
00127 SetErrorHandler(old);
00128
00129
00130
00131
00132
00133 }
00134
00135
00136
00137 void
00138 DisplayGeom::beginJob()
00139 {
00140 }
00141
00142
00143 void
00144 DisplayGeom::endJob() {
00145 }
00146
00147
00148 DEFINE_FWK_MODULE(DisplayGeom);