ATLAS Offline Software
Loading...
Searching...
No Matches
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
13#include "G4FastTrack.hh"
14
15#include "GaudiKernel/ServiceHandle.h"
16
17#include <string>
18#include <vector>
19#include <map>
20
21namespace ShowerLib {
22 class IShowerLib;
24}
25
39
40class LArG4ShowerLibSvc: public extends<AthService, ILArG4ShowerLibSvc> {
41
42public:
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
60private:
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
virtual bool checkLibrary(G4int particleCode, int detectorTag) override
std::map< int, std::string > m_locations
std::map< const ShowerLib::IShowerLib *, ShowerLib::ShowerLibStatistics * > statmap
virtual double getContainmentR(const G4FastTrack &track, int detectorTag) override
const ShowerLib::IShowerLib * getShowerLib(G4int particleCode, int detectorTag) const
get shower library from StoreGate by track (using current volume name)
std::map< int, const ShowerLib::IShowerLib * > libmap
virtual double getContainmentZ(const G4FastTrack &track, int detectorTag) override
LArG4ShowerLibSvc(const std::string &name, ISvcLocator *svc)
virtual StatusCode finalize() override
libmap m_libraryMap
mapping StoreGate key to handle in StoreGate
std::map< std::string, int > m_detmap
virtual ~LArG4ShowerLibSvc()=default
StringArrayProperty m_fileNameList
property, list of library files
virtual StatusCode initialize() override
virtual std::vector< EnergySpot > getShower(const G4FastTrack &track, int detectorTag) const override
return list of energy depositions for given track (interface implementation)
Class for shower library shower lib interface.
Definition IShowerLib.h:40
Namespace for the ShowerLib related classes.
Definition StepInfo.h:17