ATLAS Offline Software
RootVisualizationService.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 #ifndef MUONVISUALIZATIONHELPERSR4_ROOVISUALIZATIONSERVICE_H
5 #define MUONVISUALIZATIONHELPERSR4_ROOVISUALIZATIONSERVICE_H
7 #include <GaudiKernel/EventContext.h>
9 
10 #include "DrawCanvasObject.h"
11 
12 #include <TFile.h>
13 
14 #include <mutex>
15 
16 namespace MuonValR4{
18  class RootVisualizationService: public extends<AthService, IRootVisualizationService>{
19  public:
20  using base_class::base_class;
21 
22 
23  virtual StatusCode registerClient(const ClientToken& token) override final;
24 
25  virtual std::shared_ptr<ICanvasObject>
26  prepareCanvas(const EventContext& ctx, const ClientToken& token,
27  const std::string& canvasName) override final;
28  virtual StatusCode finalize() override final;
29  virtual StatusCode initialize() override final;
30 
31  using PlotPtr_t = std::shared_ptr<detail::DrawCanvasObject>;
32  using PlotVec_t = std::vector<PlotPtr_t>;
33  private:
34 
35 
36  void paintObjects(const ClientToken& token,
37  PlotVec_t&& toDraw);
38 
40  Gaudi::Property<double> m_canvasExtraScale{this, "CanvasExtraScale" , 1.5};
42  Gaudi::Property<bool> m_quadCanvas{this, "QuadraticCanas", true};
44  Gaudi::Property<std::string> m_AtlasLabel{this, "AtlasLabel", "Internal"};
46  Gaudi::Property<std::string> m_sqrtSLabel{this, "SqrtSLabel", "14"};
48  Gaudi::Property<std::string> m_lumiLabel{this, "LumiLabel", ""};
50  Gaudi::Property<unsigned> m_canvasWidth{this, "CanvasWidth", 800};
52  Gaudi::Property<unsigned> m_canvasHeight{this, "CanvasHeight", 600};
54  Gaudi::Property<std::string> m_outDir{this, "outputDir" , "./Displays/"};
57  Gaudi::Property<std::string> m_outRootFileName{this, "outputROOTFile", "AllDisplays.root"};
58 
66  bool elementsDrawn{false};
67  };
68 
69  using StorageMap_t = std::map<ClientToken, PlotsPerClient>;
72  std::unique_ptr<TFile> m_outFile{};
73 
76 
77 
78  };
79 }
80 #endif
MuonValR4::RootVisualizationService::m_outFile
std::unique_ptr< TFile > m_outFile
File into which all Canvases are saved if root is defined as extension.
Definition: RootVisualizationService.h:72
MuonValR4::RootVisualizationService::m_storage
StorageMap_t m_storage
Definition: RootVisualizationService.h:70
MuonValR4::RootVisualizationService::m_canvasHeight
Gaudi::Property< unsigned > m_canvasHeight
Height of all drawn Canvases.
Definition: RootVisualizationService.h:52
MuonValR4::RootVisualizationService::m_canvasWidth
Gaudi::Property< unsigned > m_canvasWidth
Width of all drawn Canvases.
Definition: RootVisualizationService.h:50
MuonValR4::RootVisualizationService::m_quadCanvas
Gaudi::Property< bool > m_quadCanvas
Ensure that the canvas has the same interval sizes in x & y.
Definition: RootVisualizationService.h:42
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
MuonValR4::RootVisualizationService::registerClient
virtual StatusCode registerClient(const ClientToken &token) override final
Definition: RootVisualizationService.cxx:43
MuonValR4::RootVisualizationService::paintObjects
void paintObjects(const ClientToken &token, PlotVec_t &&toDraw)
Definition: RootVisualizationService.cxx:90
MuonValR4::RootVisualizationService::m_storageMutex
std::mutex m_storageMutex
Definition: RootVisualizationService.h:74
DrawCanvasObject.h
MuonValR4::RootVisualizationService::initialize
virtual StatusCode initialize() override final
Definition: RootVisualizationService.cxx:34
MuonValR4::RootVisualizationService::m_outRootFileName
Gaudi::Property< std::string > m_outRootFileName
Name of the ROOT file into which the output Canvases are written (needs root to be in the list of out...
Definition: RootVisualizationService.h:57
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonValR4::RootVisualizationService::PlotsPerClient::elementsDrawn
bool elementsDrawn
Flag to indicate whether the plots were already dumped on disk.
Definition: RootVisualizationService.h:66
MuonValR4::RootVisualizationService::m_canvasExtraScale
Gaudi::Property< double > m_canvasExtraScale
Extra safety margin to zoom out from the Canvas.
Definition: RootVisualizationService.h:40
MuonValR4::RootVisualizationService::m_sqrtSLabel
Gaudi::Property< std::string > m_sqrtSLabel
Centre of mass energy label.
Definition: RootVisualizationService.h:46
MuonValR4::RootVisualizationService::PlotsPerClient::toDraw
PlotVec_t toDraw
List of already registered Canvases.
Definition: RootVisualizationService.h:63
MuonValR4::RootVisualizationService::StorageMap_t
std::map< ClientToken, PlotsPerClient > StorageMap_t
Definition: RootVisualizationService.h:69
MuonValR4::RootVisualizationService::m_canvasMutex
std::mutex m_canvasMutex
Definition: RootVisualizationService.h:75
MuonValR4
Lightweight algorithm to read xAOD MDT sim hits and (fast-digitised) drift circles from SG and fill a...
Definition: IPatternVisualizationTool.h:23
IRootVisualizationService.h
MuonValR4::RootVisualizationService
Implementation of the IRootVisualization service.
Definition: RootVisualizationService.h:18
MuonValR4::RootVisualizationService::PlotPtr_t
std::shared_ptr< detail::DrawCanvasObject > PlotPtr_t
Definition: RootVisualizationService.h:31
MuonValR4::RootVisualizationService::m_outDir
Gaudi::Property< std::string > m_outDir
Directory into which all plots are written to
Definition: RootVisualizationService.h:54
MuonValR4::RootVisualizationService::m_lumiLabel
Gaudi::Property< std::string > m_lumiLabel
Luminosity label.
Definition: RootVisualizationService.h:48
AthService.h
MuonValR4::RootVisualizationService::PlotVec_t
std::vector< PlotPtr_t > PlotVec_t
Definition: RootVisualizationService.h:32
MuonValR4::RootVisualizationService::finalize
virtual StatusCode finalize() override final
Definition: RootVisualizationService.cxx:184
MuonValR4::RootVisualizationService::m_AtlasLabel
Gaudi::Property< std::string > m_AtlasLabel
ATLAS label (Internal / Prelimnary / Simulation)
Definition: RootVisualizationService.h:44
MuonValR4::RootVisualizationService::prepareCanvas
virtual std::shared_ptr< ICanvasObject > prepareCanvas(const EventContext &ctx, const ClientToken &token, const std::string &canvasName) override final
Definition: RootVisualizationService.cxx:63
MuonValR4::RootVisualizationService::PlotsPerClient
Helper struct to group all plots that are belonging to a client of the service.
Definition: RootVisualizationService.h:61