artdaq_demo  v3_09_02
RootApplication_module.cc
1 // Class: RootApplication
3 // Module Type: analyzer
4 // File: RootApplication_module.cc
5 //
6 // Generated at Sun Dec 2 12:23:06 2012 by Alessandro Razeto & Nicola Rossi using artmod
7 // from art v1_02_04.
9 
10 #include "art/Framework/Core/EDAnalyzer.h"
11 #include "art/Framework/Core/ModuleMacros.h"
12 #include "art/Framework/Principal/Event.h"
13 #include "art/Framework/Principal/Handle.h"
14 
15 #include <TApplication.h>
16 #include <TSystem.h>
17 #include <unistd.h>
18 #include <future>
19 #include <iostream>
20 #include <memory>
21 
22 namespace demo {
26 class RootApplication : public art::EDAnalyzer
27 {
28 public:
37  explicit RootApplication(fhicl::ParameterSet const& p);
38 
42  ~RootApplication() override;
43 
47  void beginJob() override;
48 
55  void analyze(art::Event const& e) override;
56 
60  void endJob() override;
61 
62 private:
63  RootApplication(RootApplication const&) = delete;
64  RootApplication(RootApplication&&) = delete;
65  RootApplication& operator=(RootApplication const&) = delete;
66  RootApplication& operator=(RootApplication&&) = delete;
67 
68  std::unique_ptr<TApplication> app_;
69  bool force_new_;
70  bool dont_quit_;
71 };
72 } // namespace demo
73 
74 demo::RootApplication::RootApplication(fhicl::ParameterSet const& ps)
75  : art::EDAnalyzer(ps)
76  , force_new_(ps.get<bool>("force_new", true))
77  , dont_quit_(ps.get<bool>("dont_quit", false))
78 {}
79 
81 
82 void demo::RootApplication::analyze(art::Event const& /*unused*/) { gSystem->ProcessEvents(); }
83 
85 {
86  if ((gApplication == nullptr) || force_new_)
87  {
88  int tmp_argc(0);
89  app_ = std::make_unique<TApplication>("noapplication", &tmp_argc, nullptr);
90  }
91 }
92 
94 {
95  if (dont_quit_)
96  {
97  app_->Run(true);
98  }
99 }
100 
101 DEFINE_ART_MODULE(demo::RootApplication) // NOLINT(performance-unnecessary-value-param)
void beginJob() override
Called by art at the beginning of the job. RootApplication will create a window unless one already ex...
Provides a wrapper for displaying ROOT canvases.
~RootApplication() override
RootApplication Destructor.
void endJob() override
Called by art at the end of the job. RootApplication will close the findow if dont_quit == false...
RootApplication(fhicl::ParameterSet const &p)
RootApplication Constructor.
void analyze(art::Event const &e) override
Called by art for each event.