ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Simulation
G4Atlas
G4AtlasTools
src
G4CaloTransportTool.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 G4ATLASTOOLS_G4CALOTRANSPORTTOOL_H
6
#define G4ATLASTOOLS_G4CALOTRANSPORTTOOL_H
7
8
#include "
AthenaBaseComps/AthAlgTool.h
"
9
#include "
G4AtlasInterfaces/IG4CaloTransportTool.h
"
10
#include "G4PropagatorInField.hh"
11
12
#include <memory>
13
#include <vector>
14
15
class
G4Track;
16
class
G4VPhysicalVolume;
17
class
G4FieldTrack;
18
24
class
G4CaloTransportTool
:
virtual
public
extends<AthAlgTool, IG4CaloTransportTool>
25
{
26
27
public
:
28
29
G4CaloTransportTool
(
const
std::string&,
const
std::string&,
const
IInterface*);
30
31
// Algorithm finalize at begin of job
32
virtual
StatusCode
finalize
()
override
final
;
33
// Initialize propagator for the current thread
34
StatusCode
initializePropagator
()
override
final
;
35
// Transport input track through the geometry
36
virtual
std::vector<G4FieldTrack>
transport
(
const
G4Track& G4InputTrack)
override
final
;
37
38
private
:
39
// Deleter for the unique_ptr managing the G4PropagatorInField
40
struct
Deleter
{
41
void
operator()
(G4PropagatorInField*)
const
;
42
};
43
44
// Get the world volume in which the particle transport is performed
45
G4VPhysicalVolume*
getWorldVolume
();
46
// Create and return a new propagator
47
G4PropagatorInField*
makePropagator
();
48
// Advance track by single Geant4 step in geometry
49
void
doStep
(G4FieldTrack& fieldTrack);
50
// Pointer to the physical volume of the world (either simplified or full geometry)
51
G4VPhysicalVolume*
m_worldVolume
{};
52
53
// Whether to use simplified geometry for particle transport
54
Gaudi::Property<bool>
m_useSimplifiedGeo
{
this
,
"UseSimplifiedGeo"
,
true
,
"Use simplified geometry for particle transport"
};
55
// Name of the logical volume of the simplified world as defined in the loaded GDML file
56
Gaudi::Property<std::string>
m_simplifiedWorldLogName
{
this
,
"SimplifiedWorldLogName"
,
"Name of the logical volume of the simplified world"
};
57
// Name of volume until which the particle is tracked in transport
58
Gaudi::Property<std::string>
m_transportLimitVolume
{
this
,
"TransportLimitVolume"
,
"Name of the volume until which the particle is transported"
};
59
// Maximum number of steps in particle transport
60
Gaudi::Property<unsigned int>
m_maxSteps
{
this
,
"MaxSteps"
, 100,
"Maximum number of steps in particle transport"
};
61
// Thread local propagator
62
static
thread_local
std::unique_ptr<G4PropagatorInField, Deleter>
s_propagator
;
63
64
65
};
// class G4CaloTransportTool
66
67
68
#endif
// G4ATLASTOOLS_G4CALOTRANSPORTTOOL_H
AthAlgTool.h
IG4CaloTransportTool.h
G4CaloTransportTool::doStep
void doStep(G4FieldTrack &fieldTrack)
Definition
G4CaloTransportTool.cxx:115
G4CaloTransportTool::initializePropagator
StatusCode initializePropagator() override final
Definition
G4CaloTransportTool.cxx:39
G4CaloTransportTool::m_useSimplifiedGeo
Gaudi::Property< bool > m_useSimplifiedGeo
Definition
G4CaloTransportTool.h:54
G4CaloTransportTool::s_propagator
static std::unique_ptr< G4PropagatorInField, Deleter > s_propagator
Definition
G4CaloTransportTool.h:62
G4CaloTransportTool::m_transportLimitVolume
Gaudi::Property< std::string > m_transportLimitVolume
Definition
G4CaloTransportTool.h:58
G4CaloTransportTool::finalize
virtual StatusCode finalize() override final
Definition
G4CaloTransportTool.cxx:30
G4CaloTransportTool::m_worldVolume
G4VPhysicalVolume * m_worldVolume
Definition
G4CaloTransportTool.h:51
G4CaloTransportTool::m_simplifiedWorldLogName
Gaudi::Property< std::string > m_simplifiedWorldLogName
Definition
G4CaloTransportTool.h:56
G4CaloTransportTool::transport
virtual std::vector< G4FieldTrack > transport(const G4Track &G4InputTrack) override final
Definition
G4CaloTransportTool.cxx:152
G4CaloTransportTool::getWorldVolume
G4VPhysicalVolume * getWorldVolume()
Definition
G4CaloTransportTool.cxx:73
G4CaloTransportTool::G4CaloTransportTool
G4CaloTransportTool(const std::string &, const std::string &, const IInterface *)
Definition
G4CaloTransportTool.cxx:25
G4CaloTransportTool::m_maxSteps
Gaudi::Property< unsigned int > m_maxSteps
Definition
G4CaloTransportTool.h:60
G4CaloTransportTool::makePropagator
G4PropagatorInField * makePropagator()
Definition
G4CaloTransportTool.cxx:101
G4CaloTransportTool::Deleter
Definition
G4CaloTransportTool.h:40
G4CaloTransportTool::Deleter::operator()
void operator()(G4PropagatorInField *) const
Definition
G4CaloTransportTool.cxx:20
Generated on
for ATLAS Offline Software by
1.17.0