ATLAS Offline Software
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 /* Random generator service include */
20 
21 class G4VFastSimulationModel;
22 
24 {
25  public:
26 
27  FastCaloSimTool(const std::string& type, const std::string& name, const IInterface *parent);
29 
31  virtual StatusCode BeginOfAthenaEvent() override final;
33  virtual StatusCode EndOfAthenaEvent() override final;
34 
35 protected:
39  virtual G4VFastSimulationModel* makeFastSimModel() override final;
40 
41  private:
42 
43  // FastCaloSim service
44  ServiceHandle<ISF::IFastCaloSimParamSvc> m_FastCaloSimSvc{this, "ISF_FastCaloSimV2ParamSvc", "ISF_FastCaloSimV2ParamSvc"};
45  // FastCaloSim transportation tool
46  PublicToolHandle<IFastCaloSimCaloTransportation> m_FastCaloSimCaloTransportation{this, "FastCaloSimCaloTransportation", "FastCaloSimCaloTransportation", ""};
47  // FastCaloSim extrapolation tool
48  PublicToolHandle<IFastCaloSimCaloExtrapolation> m_FastCaloSimCaloExtrapolation{this, "FastCaloSimCaloExtrapolation", "FastCaloSimCaloExtrapolation", ""};
49  // Geant4 transportation tool
50  PublicToolHandle<IG4CaloTransportTool> m_G4CaloTransportTool{this, "G4CaloTransportTool", "G4CaloTransportTool", ""};
51  // Random generator service
52  ServiceHandle<IAthRNGSvc> m_rndmGenSvc{this, "RandomSvc", "AthRNGSvc", ""};
53  // Random generator engine name
54  Gaudi::Property<std::string> m_randomEngineName{this, "RandomStream", ""};
55  // Name of associated CaloCellContainerSD
56  Gaudi::Property<std::string> m_CaloCellContainerSDName{this, "CaloCellContainerSDName", "", "Name of the associated CaloCellContainerSD"};
57  // Flag to enable G4 transportation
58  Gaudi::Property<bool> m_doG4Transport{this, "doG4Transport", false, "Flag to enable G4 transportation"};
62  Gaudi::Property<bool> m_doPhotons{this, "doPhotons", true, "Flag to enable FCS simulation for photons"};
63  Gaudi::Property<bool> m_doElectrons{this, "doElectrons", true, "Flag to enable FCS simulation for electrons and positrons"};
64  Gaudi::Property<bool> m_doHadrons{this, "doHadrons", true, "Flag to enable FCS simulation for pions and other hadrons"};
65  Gaudi::Property<float> m_AbsEtaMin{this, "AbsEtaMin", 0, "Abs(Eta) lower bound for FastCaloSim"};
66  Gaudi::Property<float> m_AbsEtaMax{this, "AbsEtaMax", 10, "Abs(Eta) upper bound for FastCaloSim"};
67  Gaudi::Property<float> m_EkinMin{this, "EkinMin", 0, "Kinetic energy lower bound for FastCaloSim"};
68  Gaudi::Property<float> m_EkinMax{this, "EkinMax", std::numeric_limits<float>::max(), "Kinetic energy upper bound for FastCaloSim"};
69  Gaudi::Property<bool> m_doEMECFCS{this, "doEMECFCS", false, "Run FCS in EMEC region while G4 in the rest region"};
70 };
71 
72 #endif //G4FASTSIMULATION_FASTCALOSIMTOOL_H
FastCaloSimTool::m_doHadrons
Gaudi::Property< bool > m_doHadrons
Definition: FastCaloSimTool.h:64
FastSimulationBase.h
IFastCaloSimCaloExtrapolation.h
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
IFastCaloSimParamSvc.h
FastSimulationBase
Definition: FastSimulationBase.h:26
FastCaloSimTool::m_FastCaloSimSvc
ServiceHandle< ISF::IFastCaloSimParamSvc > m_FastCaloSimSvc
Definition: FastCaloSimTool.h:44
FastCaloSimTool::m_FastCaloSimCaloExtrapolation
PublicToolHandle< IFastCaloSimCaloExtrapolation > m_FastCaloSimCaloExtrapolation
Definition: FastCaloSimTool.h:48
protected
#define protected
Definition: DetDescrConditionsDict_dict_fixes.cxx:14
FastCaloSimTool::m_G4CaloTransportTool
PublicToolHandle< IG4CaloTransportTool > m_G4CaloTransportTool
Definition: FastCaloSimTool.h:50
FastCaloSimTool::m_rndmGenSvc
ServiceHandle< IAthRNGSvc > m_rndmGenSvc
Definition: FastCaloSimTool.h:52
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
IFastCaloSimCaloTransportation.h
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::m_EkinMax
Gaudi::Property< float > m_EkinMax
Definition: FastCaloSimTool.h:68
FastCaloSimTool::~FastCaloSimTool
~FastCaloSimTool()
Definition: FastCaloSimTool.h:28
FastCaloSimTool::m_doG4Transport
Gaudi::Property< bool > m_doG4Transport
Definition: FastCaloSimTool.h:58
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
IG4CaloTransportTool.h
FastCaloSimTool::m_doElectrons
Gaudi::Property< bool > m_doElectrons
Definition: FastCaloSimTool.h:63
FastCaloSimTool::m_CaloCellContainerSDName
Gaudi::Property< std::string > m_CaloCellContainerSDName
Definition: FastCaloSimTool.h:56
FastCaloSimTool::m_randomEngineName
Gaudi::Property< std::string > m_randomEngineName
Definition: FastCaloSimTool.h:54
ISF
ISFParticleOrderedQueue.
Definition: PrimaryParticleInformation.h:13
FastCaloSimTool::m_AbsEtaMax
Gaudi::Property< float > m_AbsEtaMax
Definition: FastCaloSimTool.h:66
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
FastCaloSimTool::m_AbsEtaMin
Gaudi::Property< float > m_AbsEtaMin
Definition: FastCaloSimTool.h:65
FastCaloSimTool::m_EkinMin
Gaudi::Property< float > m_EkinMin
Definition: FastCaloSimTool.h:67
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:62
FastCaloSimTool
Definition: FastCaloSimTool.h:24
FastCaloSimTool::m_FastCaloSimCaloTransportation
PublicToolHandle< IFastCaloSimCaloTransportation > m_FastCaloSimCaloTransportation
Definition: FastCaloSimTool.h:46
FastCaloSimTool::m_doEMECFCS
Gaudi::Property< bool > m_doEMECFCS
Definition: FastCaloSimTool.h:69
IAthRNGSvc.h
ServiceHandle
Definition: ClusterMakerTool.h:37