ATLAS Offline Software
LArG4FastSimSvc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 #ifndef LARG4FASTSIMSVC_LARG4FASTSIMSVC_H
5 #define LARG4FASTSIMSVC_LARG4FASTSIMSVC_H
6 
7 // local includes
10 
11 // Minimal service includes
12 #include "GaudiKernel/StatusCode.h"
13 //#include "GaudiKernel/Service.h"
14 #include "Gaudi/Property.h"
15 
16 #include "G4Electron.hh"
17 #include "G4Positron.hh"
18 #include "G4Gamma.hh"
19 #include "G4Neutron.hh"
20 #include "G4PionPlus.hh"
21 #include "G4PionMinus.hh"
22 
23 // STL includes
24 #include <string>
25 #include <map>
26 
27 template <class TYPE> class SvcFactory;
28 
30 
31 
42 class LArG4FastSimSvc : public AthService, virtual public ILArG4FastSimSvc {
43 
44  public:
45 
47  static const InterfaceID& interfaceID() { return IID_ILArG4FastSimSvc; }
48 
50  StatusCode queryInterface(const InterfaceID& riid, void** ppvIF);
51 
52  virtual StatusCode initialize();
53  virtual StatusCode finalize();
54 
55  inline virtual bool flagToShowerLib ( const G4ParticleDefinition& particleType ) const;
56  inline virtual double maxEneToShowerLib( const G4ParticleDefinition& particleType ) const;
57  inline virtual double minEneToShowerLib( const G4ParticleDefinition& particleType ) const;
58 
59  inline virtual bool ContainLow() const;
60  inline virtual bool ContainHigh() const;
61  inline virtual bool ContainCrack() const;
62 
63  inline virtual bool generateFSStartingPoints() const;
64  virtual bool generateFSStartingPoint( const HepMC::GenEvent * ge);
65  inline virtual float generateFSStartingPointsRatio() const;
66 
67  inline virtual int DetectorTag() const;
68 
69  friend class SvcFactory<LArG4FastSimSvc>;
70 
72  LArG4FastSimSvc(const std::string& name, ISvcLocator* sl);
73 
75  virtual ~LArG4FastSimSvc();
76 
77  private:
78 
79  void print() const;
80 
81  // data members
85 
89 
93 
97 
98  bool m_containLow;
101 
105  HepMC::IO_GenEvent * m_starting_points_file;
107  std::string m_detector_tag_str;
108  std::map<std::string,int> m_detmap;
109 
110 
111 };
112 
113 // Get methods
114 inline bool LArG4FastSimSvc::flagToShowerLib( const G4ParticleDefinition& particleType ) const
115 {
116  if ( &particleType == G4Electron::ElectronDefinition() ||
117  &particleType == G4Positron::PositronDefinition() ) {
118  return m_e_FlagShowerLib;
119  } else if ( &particleType == G4Gamma::GammaDefinition() ) {
120  return m_g_FlagShowerLib;
121  } else if ( &particleType == G4Neutron::NeutronDefinition() ) {
122  return m_Neut_FlagShowerLib;
123  } else if ( &particleType == G4PionPlus::PionPlusDefinition() ||
124  &particleType == G4PionMinus::PionMinusDefinition() ) {
125  return m_Pion_FlagShowerLib;
126  } else return false;
127 }
128 inline double LArG4FastSimSvc::minEneToShowerLib( const G4ParticleDefinition& particleType ) const
129 {
130  if ( &particleType == G4Electron::ElectronDefinition() ||
131  &particleType == G4Positron::PositronDefinition() ) {
132  return m_e_MinEneShowerLib;
133  } else if ( &particleType == G4Gamma::GammaDefinition() ) {
134  return m_g_MinEneShowerLib;
135  } else if ( &particleType == G4Neutron::NeutronDefinition() ) {
136  return m_Neut_MinEneShowerLib;
137  } else if ( &particleType == G4PionPlus::PionPlusDefinition() ||
138  &particleType == G4PionMinus::PionMinusDefinition() ) {
139  return m_Pion_MinEneShowerLib;
140  } else return 0.0;
141 }
142 
143 inline double LArG4FastSimSvc::maxEneToShowerLib( const G4ParticleDefinition& particleType ) const
144 {
145  if ( &particleType == G4Electron::ElectronDefinition() ||
146  &particleType == G4Positron::PositronDefinition() ) {
147  return m_e_MaxEneShowerLib;
148  } else if ( &particleType == G4Gamma::GammaDefinition() ) {
149  return m_g_MaxEneShowerLib;
150  } else if ( &particleType == G4Neutron::NeutronDefinition() ) {
151  return m_Neut_MaxEneShowerLib;
152  } else if ( &particleType == G4PionPlus::PionPlusDefinition() ||
153  &particleType == G4PionMinus::PionMinusDefinition() ) {
154  return m_Pion_MaxEneShowerLib;
155  } else return 0.0;
156 }
157 
158 inline bool LArG4FastSimSvc::ContainLow() const { return m_containLow; }
159 inline bool LArG4FastSimSvc::ContainHigh() const { return m_containHigh; }
160 inline bool LArG4FastSimSvc::ContainCrack() const { return m_containCrack; }
161 
164 inline int LArG4FastSimSvc::DetectorTag() const { return m_detector_tag; }
165 #endif // LARG4FASTSIMSVC_LARG4FASTSIMSVC_H
LArG4FastSimSvc::m_containLow
bool m_containLow
switch for containment check at low eta
Definition: LArG4FastSimSvc.h:98
LArG4FastSimSvc::m_detector_tag_str
std::string m_detector_tag_str
Definition: LArG4FastSimSvc.h:107
LArG4FastSimSvc::m_e_MinEneShowerLib
double m_e_MinEneShowerLib
lower energy limit for electron frozen showers
Definition: LArG4FastSimSvc.h:83
LArG4FastSimSvc::m_generated_starting_points_file
StringProperty m_generated_starting_points_file
switch for shower starting point record
Definition: LArG4FastSimSvc.h:102
LArG4FastSimSvc::m_detector_tag
int m_detector_tag
name for the detector tag for the ShowerLibSvc
Definition: LArG4FastSimSvc.h:106
LArG4FastSimSvc::generateFSStartingPointsRatio
virtual float generateFSStartingPointsRatio() const
Definition: LArG4FastSimSvc.h:163
LArG4FastSimSvc::m_Neut_MinEneShowerLib
double m_Neut_MinEneShowerLib
lower energy limit for neutron frozen showers
Definition: LArG4FastSimSvc.h:91
LArG4FastSimSvc::print
void print() const
dump object content
Definition: LArG4FastSimSvc.cxx:130
LArG4FastSimSvc::initialize
virtual StatusCode initialize()
Definition: LArG4FastSimSvc.cxx:69
LArG4FastSimSvc::m_detmap
std::map< std::string, int > m_detmap
Definition: LArG4FastSimSvc.h:108
SvcFactory
Definition: AthCnvSvc.h:28
LArG4FastSimSvc
Class for fast simulation option service.
Definition: LArG4FastSimSvc.h:42
LArG4FastSimSvc::interfaceID
static const InterfaceID & interfaceID()
Retrieve interface ID.
Definition: LArG4FastSimSvc.h:47
LArG4FastSimSvc::ContainLow
virtual bool ContainLow() const
Apply check containment at low eta.
Definition: LArG4FastSimSvc.h:158
LArG4FastSimSvc::m_containHigh
bool m_containHigh
switch for containment check at high eta
Definition: LArG4FastSimSvc.h:99
LArG4FastSimSvc::m_starting_points_file
HepMC::IO_GenEvent * m_starting_points_file
Definition: LArG4FastSimSvc.h:105
LArG4FastSimSvc::finalize
virtual StatusCode finalize()
Definition: LArG4FastSimSvc.cxx:104
LArG4FastSimSvc::maxEneToShowerLib
virtual double maxEneToShowerLib(const G4ParticleDefinition &particleType) const
get lower energy limit for frozen showers
Definition: LArG4FastSimSvc.h:143
particleType
Definition: particleType.h:29
LArG4FastSimSvc::m_containCrack
bool m_containCrack
switch for containment check in crack region
Definition: LArG4FastSimSvc.h:100
LArG4FastSimSvc::ContainCrack
virtual bool ContainCrack() const
Apply check containment in crack region.
Definition: LArG4FastSimSvc.h:160
LArG4FastSimSvc::DetectorTag
virtual int DetectorTag() const
Definition: LArG4FastSimSvc.h:164
ILArG4FastSimSvc
Definition: ILArG4FastSimSvc.h:15
LArG4FastSimSvc::m_Pion_MinEneShowerLib
double m_Pion_MinEneShowerLib
lower energy limit for pion frozen showers
Definition: LArG4FastSimSvc.h:95
LArG4FastSimSvc::generateFSStartingPoints
virtual bool generateFSStartingPoints() const
Definition: LArG4FastSimSvc.h:162
ILArG4FastSimSvc.h
LArG4FastSimSvc::LArG4FastSimSvc
LArG4FastSimSvc(const std::string &name, ISvcLocator *sl)
Standard Constructor.
Definition: LArG4FastSimSvc.cxx:19
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthService
Definition: AthService.h:32
LArG4FastSimSvc::ContainHigh
virtual bool ContainHigh() const
Apply check containment at high eta.
Definition: LArG4FastSimSvc.h:159
IO_GenEvent_fwd.h
LArG4FastSimSvc::generateFSStartingPoint
virtual bool generateFSStartingPoint(const HepMC::GenEvent *ge)
Definition: LArG4FastSimSvc.cxx:165
LArG4FastSimSvc::m_g_MaxEneShowerLib
double m_g_MaxEneShowerLib
lower energy limit for photon frozen showers
Definition: LArG4FastSimSvc.h:87
LArG4FastSimSvc::m_Pion_MaxEneShowerLib
double m_Pion_MaxEneShowerLib
upper energy limit for pion frozen showers
Definition: LArG4FastSimSvc.h:96
LArG4FastSimSvc::m_generated_starting_points_ratio
float m_generated_starting_points_ratio
switch for shower starting point record
Definition: LArG4FastSimSvc.h:103
LArG4FastSimSvc::m_Neut_FlagShowerLib
bool m_Neut_FlagShowerLib
switch for neutron frozen showers
Definition: LArG4FastSimSvc.h:90
LArG4FastSimSvc::~LArG4FastSimSvc
virtual ~LArG4FastSimSvc()
Standard Destructor.
Definition: LArG4FastSimSvc.cxx:64
LArG4FastSimSvc::minEneToShowerLib
virtual double minEneToShowerLib(const G4ParticleDefinition &particleType) const
get upper energy limit for frozen showers
Definition: LArG4FastSimSvc.h:128
LArG4FastSimSvc::m_Pion_FlagShowerLib
bool m_Pion_FlagShowerLib
switch for pion frozen showers
Definition: LArG4FastSimSvc.h:94
LArG4FastSimSvc::m_generate_starting_points
bool m_generate_starting_points
Definition: LArG4FastSimSvc.h:104
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LArG4FastSimSvc::m_g_FlagShowerLib
bool m_g_FlagShowerLib
switch for photon frozen showers
Definition: LArG4FastSimSvc.h:86
LArG4FastSimSvc::queryInterface
StatusCode queryInterface(const InterfaceID &riid, void **ppvIF)
Query interface.
Definition: LArG4FastSimSvc.cxx:116
LArG4FastSimSvc::m_e_FlagShowerLib
bool m_e_FlagShowerLib
switch for electron frozen showers
Definition: LArG4FastSimSvc.h:82
LArG4FastSimSvc::m_g_MinEneShowerLib
double m_g_MinEneShowerLib
upper energy limit for photon frozen showers
Definition: LArG4FastSimSvc.h:88
LArG4FastSimSvc::flagToShowerLib
virtual bool flagToShowerLib(const G4ParticleDefinition &particleType) const
get switch for frozen showers
Definition: LArG4FastSimSvc.h:114
AthService.h
LArG4FastSimSvc::m_Neut_MaxEneShowerLib
double m_Neut_MaxEneShowerLib
upper energy limit for neutron frozen showers
Definition: LArG4FastSimSvc.h:92
LArG4FastSimSvc::m_e_MaxEneShowerLib
double m_e_MaxEneShowerLib
upper energy limit for electron frozen showers
Definition: LArG4FastSimSvc.h:84