Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
FastCaloSimTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef G4FASTSIMULATION_FASTCALOSIMTOOL_H
6 #define G4FASTSIMULATION_FASTCALOSIMTOOL_H
7 
8 /* Fast simulation base include */
10 /* FastCaloSim parametrization service include */
12 /* FastCaloSim calorimeter transportation include */
14 /* FastCaloSim calorimeter extrapolation include */
16 /* Geant4 transportation tool */
18 // Geant4 Punchthrough G4 Tool
20 
21 /* Random generator service include */
23 
24 class G4VFastSimulationModel;
25 
27 {
28  public:
29 
30  FastCaloSimTool(const std::string& type, const std::string& name, const IInterface *parent);
32 
34  virtual StatusCode BeginOfAthenaEvent() override final;
36  virtual StatusCode EndOfAthenaEvent() override final;
37 
38 protected:
42  virtual G4VFastSimulationModel* makeFastSimModel() override final;
43 
44  private:
45 
46  // FastCaloSim service
47  ServiceHandle<ISF::IFastCaloSimParamSvc> m_FastCaloSimSvc{this, "ISF_FastCaloSimV2ParamSvc", "ISF_FastCaloSimV2ParamSvc"};
48  // FastCaloSim transportation tool
49  PublicToolHandle<IFastCaloSimCaloTransportation> m_FastCaloSimCaloTransportation{this, "FastCaloSimCaloTransportation", "FastCaloSimCaloTransportation", ""};
50  // FastCaloSim extrapolation tool
51  PublicToolHandle<IFastCaloSimCaloExtrapolation> m_FastCaloSimCaloExtrapolation{this, "FastCaloSimCaloExtrapolation", "FastCaloSimCaloExtrapolation", ""};
52  // Geant4 transportation tool
53  PublicToolHandle<IG4CaloTransportTool> m_G4CaloTransportTool{this, "G4CaloTransportTool", "G4CaloTransportTool", ""};
54  // Geant4 Punchthrough G4 Tool
55  PublicToolHandle<IPunchThroughSimWrapper> m_PunchThroughSimWrapper{this, "PunchThroughSimWrapper", "PunchThroughSimWrapper", ""};
56 
57  // Random generator service
58  ServiceHandle<IAthRNGSvc> m_rndmGenSvc{this, "RandomSvc", "AthRNGSvc", ""};
59  // Random generator engine name
60  Gaudi::Property<std::string> m_randomEngineName{this, "RandomStream", ""};
61  // Name of associated CaloCellContainerSD
62  Gaudi::Property<std::string> m_CaloCellContainerSDName{this, "CaloCellContainerSDName", "", "Name of the associated CaloCellContainerSD"};
63  // Flag to enable G4 transportation
64  Gaudi::Property<bool> m_doG4Transport{this, "doG4Transport", false, "Flag to enable G4 transportation"};
68  Gaudi::Property<bool> m_doPhotons{this, "doPhotons", true, "Flag to enable FCS simulation for photons"};
69  Gaudi::Property<bool> m_doElectrons{this, "doElectrons", true, "Flag to enable FCS simulation for electrons and positrons"};
70  Gaudi::Property<bool> m_doHadrons{this, "doHadrons", true, "Flag to enable FCS simulation for pions and other hadrons"};
71  Gaudi::Property<float> m_AbsEtaMin{this, "AbsEtaMin", 0, "Abs(Eta) lower bound for FastCaloSim"};
72  Gaudi::Property<float> m_AbsEtaMax{this, "AbsEtaMax", 10, "Abs(Eta) upper bound for FastCaloSim"};
73  Gaudi::Property<float> m_EkinMinPhotons{this, "EkinMinPhotons", 0, "Kinetic photon energy lower bound for FastCaloSim"};
74  Gaudi::Property<float> m_EkinMaxPhotons{this, "EkinMaxPhotons", std::numeric_limits<float>::max(), "Kinetic photon energy upper bound for FastCaloSim"};
75  Gaudi::Property<float> m_EkinMinElectrons{this, "EkinMinElectrons", 0, "Kinetic electron energy lower bound for FastCaloSim"};
76  Gaudi::Property<float> m_EkinMaxElectrons{this, "EkinMaxElectrons", std::numeric_limits<float>::max(), "Kinetic electron energy upper bound for FastCaloSim"};
77  Gaudi::Property<bool> m_doEMECFCS{this, "doEMECFCS", false, "Run FCS in EMEC region while G4 in the rest region"};
78  Gaudi::Property<bool> m_doPunchThrough{this, "doPunchThrough", true, "Run punchthrough simulation for particle entering Calo-MS boundary"};
79 };
80 
81 #endif //G4FASTSIMULATION_FASTCALOSIMTOOL_H
FastCaloSimTool::m_doHadrons
Gaudi::Property< bool > m_doHadrons
Definition: FastCaloSimTool.h:70
FastCaloSimTool::m_EkinMaxPhotons
Gaudi::Property< float > m_EkinMaxPhotons
Definition: FastCaloSimTool.h:74
FastSimulationBase.h
IFastCaloSimCaloExtrapolation.h
FastCaloSimTool::m_doPunchThrough
Gaudi::Property< bool > m_doPunchThrough
Definition: FastCaloSimTool.h:78
FastCaloSimTool::m_EkinMinPhotons
Gaudi::Property< float > m_EkinMinPhotons
Definition: FastCaloSimTool.h:73
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
IFastCaloSimParamSvc.h
FastCaloSimTool::m_EkinMinElectrons
Gaudi::Property< float > m_EkinMinElectrons
Definition: FastCaloSimTool.h:75
FastSimulationBase
Definition: FastSimulationBase.h:26
FastCaloSimTool::m_FastCaloSimSvc
ServiceHandle< ISF::IFastCaloSimParamSvc > m_FastCaloSimSvc
Definition: FastCaloSimTool.h:47
FastCaloSimTool::m_FastCaloSimCaloExtrapolation
PublicToolHandle< IFastCaloSimCaloExtrapolation > m_FastCaloSimCaloExtrapolation
Definition: FastCaloSimTool.h:51
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
protected
#define protected
Definition: DetDescrConditionsDict_dict_fixes.cxx:14
FastCaloSimTool::m_G4CaloTransportTool
PublicToolHandle< IG4CaloTransportTool > m_G4CaloTransportTool
Definition: FastCaloSimTool.h:53
FastCaloSimTool::m_rndmGenSvc
ServiceHandle< IAthRNGSvc > m_rndmGenSvc
Definition: FastCaloSimTool.h:58
FastCaloSimTool::EndOfAthenaEvent
virtual StatusCode EndOfAthenaEvent() override final
End of an athena event - do any thing that needs to be done at the end of each athena event.
Definition: FastCaloSimTool.cxx:36
FastCaloSimTool::FastCaloSimTool
FastCaloSimTool(const std::string &type, const std::string &name, const IInterface *parent)
Default constructor.
Definition: FastCaloSimTool.cxx:11
IPunchThroughSimWrapper.h
IFastCaloSimCaloTransportation.h
FastCaloSimTool::m_PunchThroughSimWrapper
PublicToolHandle< IPunchThroughSimWrapper > m_PunchThroughSimWrapper
Definition: FastCaloSimTool.h:55
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
test_pyathena.parent
parent
Definition: test_pyathena.py:15
FastCaloSimTool::makeFastSimModel
virtual G4VFastSimulationModel * makeFastSimModel() override final
Method to make the actual fast simulation model itself, which will be owned by the tool.
Definition: FastCaloSimTool.cxx:58
FastCaloSimTool::~FastCaloSimTool
~FastCaloSimTool()
Definition: FastCaloSimTool.h:31
FastCaloSimTool::m_doG4Transport
Gaudi::Property< bool > m_doG4Transport
Definition: FastCaloSimTool.h:64
FastCaloSimTool::BeginOfAthenaEvent
virtual StatusCode BeginOfAthenaEvent() override final
Begin of an athena event - do any thing that needs to be done at the beginning of each athena event.
Definition: FastCaloSimTool.cxx:16
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
columnar::final
CM final
Definition: ColumnAccessor.h:106
IG4CaloTransportTool.h
FastCaloSimTool::m_doElectrons
Gaudi::Property< bool > m_doElectrons
Definition: FastCaloSimTool.h:69
FastCaloSimTool::m_CaloCellContainerSDName
Gaudi::Property< std::string > m_CaloCellContainerSDName
Definition: FastCaloSimTool.h:62
FastCaloSimTool::m_randomEngineName
Gaudi::Property< std::string > m_randomEngineName
Definition: FastCaloSimTool.h:60
ISF
ISFParticleOrderedQueue.
Definition: PrimaryParticleInformation.h:13
FastCaloSimTool::m_AbsEtaMax
Gaudi::Property< float > m_AbsEtaMax
Definition: FastCaloSimTool.h:72
FastCaloSimTool::m_AbsEtaMin
Gaudi::Property< float > m_AbsEtaMin
Definition: FastCaloSimTool.h:71
FastCaloSimTool::m_doPhotons
Gaudi::Property< bool > m_doPhotons
Optional flags that allow to further limit the usage of fast simulation beyond the default configurat...
Definition: FastCaloSimTool.h:68
FastCaloSimTool
Definition: FastCaloSimTool.h:27
FastCaloSimTool::m_FastCaloSimCaloTransportation
PublicToolHandle< IFastCaloSimCaloTransportation > m_FastCaloSimCaloTransportation
Definition: FastCaloSimTool.h:49
FastCaloSimTool::m_doEMECFCS
Gaudi::Property< bool > m_doEMECFCS
Definition: FastCaloSimTool.h:77
IAthRNGSvc.h
ServiceHandle
Definition: ClusterMakerTool.h:37
FastCaloSimTool::m_EkinMaxElectrons
Gaudi::Property< float > m_EkinMaxElectrons
Definition: FastCaloSimTool.h:76