ATLAS Offline Software
LArG4ShowerLibSvc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
6 #ifndef G4SHOWERLIBSVC_G4SHOWERLIBSVC_H
7 #define G4SHOWERLIBSVC_G4SHOWERLIBSVC_H
8 
10 
12 #include "LArG4Code/EnergySpot.h"
13 #include "G4FastTrack.hh"
14 
15 #include "GaudiKernel/ServiceHandle.h"
16 
17 #include <string>
18 #include <vector>
19 #include <map>
20 
21 namespace ShowerLib {
22  class IShowerLib;
23  class ShowerLibStatistics;
24 }
25 
40 class LArG4ShowerLibSvc: public extends<AthService, ILArG4ShowerLibSvc> {
41 
42 public:
43  LArG4ShowerLibSvc(const std::string& name, ISvcLocator* svc);
44  virtual ~LArG4ShowerLibSvc() = default;
45 
46  virtual StatusCode initialize() override;
47  virtual StatusCode finalize() override;
48 
49  virtual bool checkLibrary(G4int particleCode, int detectorTag) override;
50 
52 #ifdef DEBUG_FrozenShowers
53  virtual std::vector<EnergySpot> getShower(const G4FastTrack& track, int detectorTag);
54 #else
55  virtual std::vector<EnergySpot> getShower(const G4FastTrack& track, int detectorTag) const override;
56 #endif
57  virtual double getContainmentZ(const G4FastTrack& track, int detectorTag) override;
58  virtual double getContainmentR(const G4FastTrack& track, int detectorTag) override;
59 
60 private:
62  const ShowerLib::IShowerLib* getShowerLib(G4int particleCode, int detectorTag) const;
63 
64  typedef std::map<int, const ShowerLib::IShowerLib*> libmap;
66  typedef std::map<const ShowerLib::IShowerLib*, ShowerLib::ShowerLibStatistics*> statmap;
68  std::map<int,std::string> m_locations;
69  std::map<std::string,int> m_detmap;
70 
71  StringArrayProperty m_fileNameList {this, "FileNameList", {}, "List of filenames for direct reading"};
72 };
73 
74 #endif // G4SHOWERLIBSVC_G4SHOWERLIBSVC_H
75 
LArG4ShowerLibSvc::getShower
virtual std::vector< EnergySpot > getShower(const G4FastTrack &track, int detectorTag) const override
return list of energy depositions for given track (interface implementation)
Definition: LArG4ShowerLibSvc.cxx:177
LArG4ShowerLibSvc::finalize
virtual StatusCode finalize() override
Definition: LArG4ShowerLibSvc.cxx:119
LArG4ShowerLibSvc::LArG4ShowerLibSvc
LArG4ShowerLibSvc(const std::string &name, ISvcLocator *svc)
Definition: LArG4ShowerLibSvc.cxx:21
LArG4ShowerLibSvc::getShowerLib
const ShowerLib::IShowerLib * getShowerLib(G4int particleCode, int detectorTag) const
get shower library from StoreGate by track (using current volume name)
Definition: LArG4ShowerLibSvc.cxx:144
LArG4ShowerLibSvc::m_libraryMap
libmap m_libraryMap
mapping StoreGate key to handle in StoreGate
Definition: LArG4ShowerLibSvc.h:65
LArG4ShowerLibSvc::statmap
std::map< const ShowerLib::IShowerLib *, ShowerLib::ShowerLibStatistics * > statmap
Definition: LArG4ShowerLibSvc.h:66
ILArG4ShowerLibSvc.h
LArG4ShowerLibSvc::checkLibrary
virtual bool checkLibrary(G4int particleCode, int detectorTag) override
Definition: LArG4ShowerLibSvc.cxx:159
LArG4ShowerLibSvc::m_detmap
std::map< std::string, int > m_detmap
Definition: LArG4ShowerLibSvc.h:69
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArG4ShowerLibSvc::m_locations
std::map< int, std::string > m_locations
Definition: LArG4ShowerLibSvc.h:68
LArG4ShowerLibSvc::m_statisticsMap
statmap m_statisticsMap
Definition: LArG4ShowerLibSvc.h:67
ShowerLib::IShowerLib
Class for shower library shower lib interface.
Definition: IShowerLib.h:40
LArG4ShowerLibSvc::libmap
std::map< int, const ShowerLib::IShowerLib * > libmap
Definition: LArG4ShowerLibSvc.h:64
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
LArG4ShowerLibSvc::initialize
virtual StatusCode initialize() override
Definition: LArG4ShowerLibSvc.cxx:36
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
LArG4ShowerLibSvc::m_fileNameList
StringArrayProperty m_fileNameList
property, list of library files
Definition: LArG4ShowerLibSvc.h:71
LArG4ShowerLibSvc::getContainmentZ
virtual double getContainmentZ(const G4FastTrack &track, int detectorTag) override
Definition: LArG4ShowerLibSvc.cxx:236
EnergySpot.h
LArG4ShowerLibSvc
Class for shower library service.
Definition: LArG4ShowerLibSvc.h:40
LArG4ShowerLibSvc::getContainmentR
virtual double getContainmentR(const G4FastTrack &track, int detectorTag) override
Definition: LArG4ShowerLibSvc.cxx:249
AthService.h
ShowerLib
Namespace for the ShowerLib related classes.
Definition: StepInfo.h:17
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
LArG4ShowerLibSvc::~LArG4ShowerLibSvc
virtual ~LArG4ShowerLibSvc()=default