ATLAS Offline Software
Classes | Public Types | Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
ISF::ActsFatrasSimTool Class Reference

#include <ActsFatrasSimTool.h>

Inheritance diagram for ISF::ActsFatrasSimTool:
Collaboration diagram for ISF::ActsFatrasSimTool:

Classes

struct  HitSurfaceSelector
 Simple struct to select surfaces where hits should be generated. More...
 
struct  SingleParticleSimulation
 Single particle simulation with fixed propagator, interactions, and decay. More...
 

Public Types

using Generator = std::ranlux48
 
using Navigator = Acts::Navigator
 
using ChargedStepper = Acts::EigenStepper< Acts::StepperExtensionList< Acts::DefaultExtension, Acts::DenseEnvironmentExtension > >
 
using ChargedPropagator = Acts::Propagator< ChargedStepper, Navigator >
 
using NeutralStepper = Acts::StraightLineStepper
 
using NeutralPropagator = Acts::Propagator< NeutralStepper, Navigator >
 
using ChargedSelector = ActsFatras::ChargedSelector
 
using ChargedInteractions = ActsFatras::StandardChargedElectroMagneticInteractions
 
using ChargedSimulation = SingleParticleSimulation< ChargedPropagator, ChargedInteractions, HitSurfaceSelector, ActsFatras::NoDecay >
 
using NeutralSelector = ActsFatras::NeutralSelector
 
using NeutralInteractions = ActsFatras::InteractionList<>
 
using NeutralSimulation = SingleParticleSimulation< NeutralPropagator, NeutralInteractions, ActsFatras::NoSurface, ActsFatras::NoDecay >
 
using Simulation = ActsFatras::Simulation< ChargedSelector, ChargedSimulation, NeutralSelector, NeutralSimulation >
 

Public Member Functions

 ActsFatrasSimTool (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual ~ActsFatrasSimTool ()
 
virtual StatusCode initialize () override
 
virtual StatusCode simulate (ISFParticle &isp, ISFParticleContainer &, McEventCollection *) override
 
virtual StatusCode simulateVector (const ISFParticleVector &particles, ISFParticleContainer &secondaries, McEventCollection *mcEventCollection, McEventCollection *shadowTruth=nullptr) override
 Simulation call for vectors of particles. More...
 
virtual StatusCode setupEvent (const EventContext &) override
 Setup Event chain - in case of a begin-of event action is needed. More...
 
virtual StatusCode releaseEvent (const EventContext &) override
 Release Event chain - in case of an end-of event action is needed. More...
 
virtual ISF::SimulationFlavor simFlavor () const override
 
virtual Acts::MagneticFieldContext getMagneticFieldContext (const EventContext &) const
 
virtual StatusCode sysInitialize () override
 Gaudi sysInitialize() methods. More...
 
virtual StatusCode setupEventST () override
 Setup Event chain - in case of a begin-of event action is needed (called by ISimulationSvc) More...
 
virtual StatusCode releaseEventST () override
 Release Event chain - in case of an end-of event action is needed (called by ISimulationSvc) More...
 
const ChronoEntity * chronoStart (const IChronoSvc::ChronoTag &tag)
 wrapper call to start chrono with given tag More...
 
const ChronoEntity * chronoStop (const IChronoSvc::ChronoTag &tag)
 wrapper call to stop chrono with given tag More...
 

Protected Attributes

std::string m_chronoSvcName {"ChronoStatSvc"}
 Name of the timing service - can be set by declareProperty() More...
 
IChronoStatSvc * m_chrono {}
 The timing service for general usage. More...
 

Private Member Functions

template<class T >
StatusCode retrieveTool (ToolHandle< T > &thandle)
 
int getATLASProcessCode (ActsFatras::ProcessType actspt)
 

Private Attributes

ServiceHandle< IAthRNGSvcm_rngSvc {this, "RNGServec", "AthRNGSvc"}
 
ATHRNG::RNGWrapper *m_randomEngine ATLAS_THREAD_SAFE {}
 
Gaudi::Property< std::string > m_randomEngineName
 
ToolHandle< IActsTrackingGeometryToolm_trackingGeometryTool
 
std::shared_ptr< const Acts::TrackingGeometry > m_trackingGeometry
 
SG::ReadCondHandleKey< AtlasFieldCacheCondObjm_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"}
 
std::shared_ptr< const Acts::Logger > m_logger {nullptr}
 
PublicToolHandle< ISF::IParticleFilterm_particleFilter
 
Gaudi::Property< double > m_interact_minPt
 
Gaudi::Property< bool > m_meanEnergyLoss {this, "MeanEnergyLoss", true, "Toggle between mean and mode evaluation of energy loss"}
 
Gaudi::Property< bool > m_includeGgradient {this, "IncludeGgradient", true, "Boolean flag for inclusion of d(dEds)d(q/p) into energy loss"}
 
Gaudi::Property< double > m_momentumCutOff {this, "MomentumCutOff", 0., "Cut-off value for the momentum in SI units"}
 
Gaudi::Property< double > m_maxStep
 
Gaudi::Property< double > m_maxRungeKuttaStepTrials
 
Gaudi::Property< double > m_maxStepSize
 
Gaudi::Property< double > m_pathLimit
 
Gaudi::Property< bool > m_loopProtection
 
Gaudi::Property< double > m_loopFraction
 
Gaudi::Property< double > m_tolerance
 
Gaudi::Property< double > m_stepSizeCutOff
 
Gaudi::Property< std::map< int, int > > m_processTypeMap
 

Detailed Description

Definition at line 65 of file ActsFatrasSimTool.h.

Member Typedef Documentation

◆ ChargedInteractions

using ISF::ActsFatrasSimTool::ChargedInteractions = ActsFatras::StandardChargedElectroMagneticInteractions

Definition at line 189 of file ActsFatrasSimTool.h.

◆ ChargedPropagator

Definition at line 180 of file ActsFatrasSimTool.h.

◆ ChargedSelector

using ISF::ActsFatrasSimTool::ChargedSelector = ActsFatras::ChargedSelector

Definition at line 188 of file ActsFatrasSimTool.h.

◆ ChargedSimulation

Definition at line 191 of file ActsFatrasSimTool.h.

◆ ChargedStepper

using ISF::ActsFatrasSimTool::ChargedStepper = Acts::EigenStepper<Acts::StepperExtensionList< Acts::DefaultExtension, Acts::DenseEnvironmentExtension > >

Definition at line 175 of file ActsFatrasSimTool.h.

◆ Generator

using ISF::ActsFatrasSimTool::Generator = std::ranlux48

Definition at line 171 of file ActsFatrasSimTool.h.

◆ Navigator

using ISF::ActsFatrasSimTool::Navigator = Acts::Navigator

Definition at line 173 of file ActsFatrasSimTool.h.

◆ NeutralInteractions

using ISF::ActsFatrasSimTool::NeutralInteractions = ActsFatras::InteractionList<>

Definition at line 196 of file ActsFatrasSimTool.h.

◆ NeutralPropagator

Definition at line 183 of file ActsFatrasSimTool.h.

◆ NeutralSelector

using ISF::ActsFatrasSimTool::NeutralSelector = ActsFatras::NeutralSelector

Definition at line 195 of file ActsFatrasSimTool.h.

◆ NeutralSimulation

Definition at line 197 of file ActsFatrasSimTool.h.

◆ NeutralStepper

using ISF::ActsFatrasSimTool::NeutralStepper = Acts::StraightLineStepper

Definition at line 182 of file ActsFatrasSimTool.h.

◆ Simulation

Definition at line 201 of file ActsFatrasSimTool.h.

Constructor & Destructor Documentation

◆ ActsFatrasSimTool()

ISF::ActsFatrasSimTool::ActsFatrasSimTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 16 of file ActsFatrasSimTool.cxx.

◆ ~ActsFatrasSimTool()

ISF::ActsFatrasSimTool::~ActsFatrasSimTool ( )
virtual

Definition at line 21 of file ActsFatrasSimTool.cxx.

21 {}

Member Function Documentation

◆ chronoStart()

const ChronoEntity* ISF::BaseSimulatorTool::chronoStart ( const IChronoSvc::ChronoTag &  tag)
inlineinherited

wrapper call to start chrono with given tag

Definition at line 100 of file BaseSimulatorTool.h.

100  {
101  if (m_chrono) return m_chrono->chronoStart( tag);
102  return nullptr;
103  }

◆ chronoStop()

const ChronoEntity* ISF::BaseSimulatorTool::chronoStop ( const IChronoSvc::ChronoTag &  tag)
inlineinherited

wrapper call to stop chrono with given tag

Definition at line 106 of file BaseSimulatorTool.h.

106  {
107  if (m_chrono) return m_chrono->chronoStop( tag);
108  return nullptr;
109  }

◆ getATLASProcessCode()

int ISF::ActsFatrasSimTool::getATLASProcessCode ( ActsFatras::ProcessType  actspt)
inlineprivate

Definition at line 287 of file ActsFatrasSimTool.h.

287 {return m_processTypeMap[static_cast<uint32_t>(actspt)];};

◆ getMagneticFieldContext()

Acts::MagneticFieldContext ISF::ActsFatrasSimTool::getMagneticFieldContext ( const EventContext &  ctx) const
virtual

Definition at line 193 of file ActsFatrasSimTool.cxx.

193  {
195  if (!readHandle.isValid()) {
196  ATH_MSG_ERROR(name() + ": Failed to retrieve magnetic field condition data " + m_fieldCacheCondObjInputKey.key() + ".");
197  }
198  else ATH_MSG_DEBUG(name() << "retrieved magnetic field condition data "<< m_fieldCacheCondObjInputKey.key());
199  const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
200 
201  return Acts::MagneticFieldContext(fieldCondObj);
202 }

◆ initialize()

StatusCode ISF::ActsFatrasSimTool::initialize ( )
overridevirtual

Reimplemented from ISF::BaseSimulatorTool.

Definition at line 23 of file ActsFatrasSimTool.cxx.

23  {
25  ATH_MSG_INFO("ISF::ActsFatrasSimTool update with ACTS 32.2.0");
26  // Retrieve particle filter
27  if (!m_particleFilter.empty()) ATH_CHECK(m_particleFilter.retrieve());
28 
29  // setup logger
30  m_logger = makeActsAthenaLogger(this, std::string("ActsFatras"),std::string("ActsFatrasSimTool"));
31 
32  // retrive tracking geo tool
34  m_trackingGeometry = m_trackingGeometryTool->trackingGeometry();
35 
36  //retrive Magnetfield tool
37  ATH_MSG_VERBOSE("Using ATLAS magnetic field service");
39 
40  // Random number service
41  if (m_rngSvc.retrieve().isFailure()) {
42  ATH_MSG_FATAL("Could not retrieve " << m_rngSvc);
43  return StatusCode::FAILURE;
44  }
45  // Get own engine with own seeds
46  m_randomEngine = m_rngSvc->getEngine(this, m_randomEngineName.value());
47  if (!m_randomEngine) {
48  ATH_MSG_FATAL("Could not get random engine '" << m_randomEngineName.value() << "'");
49  return StatusCode::FAILURE;
50  }
51 
52  return StatusCode::SUCCESS;
53 }

◆ releaseEvent()

virtual StatusCode ISF::ActsFatrasSimTool::releaseEvent ( const EventContext &  )
inlineoverridevirtual

Release Event chain - in case of an end-of event action is needed.

Reimplemented from ISF::BaseSimulatorTool.

Definition at line 219 of file ActsFatrasSimTool.h.

219  {
220  return StatusCode::SUCCESS; };

◆ releaseEventST()

virtual StatusCode ISF::BaseSimulatorTool::releaseEventST ( )
inlineoverridevirtualinherited

Release Event chain - in case of an end-of event action is needed (called by ISimulationSvc)

Reimplemented in ISF::FastCaloSimV2Tool.

Definition at line 96 of file BaseSimulatorTool.h.

97  { return releaseEvent(Gaudi::Hive::currentContext()); }

◆ retrieveTool()

template<class T >
StatusCode ISF::ActsFatrasSimTool::retrieveTool ( ToolHandle< T > &  thandle)
inlineprivate

Definition at line 230 of file ActsFatrasSimTool.h.

230  {
231  if (!thandle.empty() && thandle.retrieve().isFailure()) {
232  ATH_MSG_FATAL("Cannot retrieve " << thandle << ". Abort.");
233  return StatusCode::FAILURE;
234  } else ATH_MSG_DEBUG("Successfully retrieved " << thandle);
235  return StatusCode::SUCCESS;
236  }

◆ setupEvent()

virtual StatusCode ISF::ActsFatrasSimTool::setupEvent ( const EventContext &  )
inlineoverridevirtual

Setup Event chain - in case of a begin-of event action is needed.

Reimplemented from ISF::BaseSimulatorTool.

Definition at line 217 of file ActsFatrasSimTool.h.

217  {
218  return StatusCode::SUCCESS; };

◆ setupEventST()

virtual StatusCode ISF::BaseSimulatorTool::setupEventST ( )
inlineoverridevirtualinherited

Setup Event chain - in case of a begin-of event action is needed (called by ISimulationSvc)

Reimplemented in ISF::FastCaloSimV2Tool.

Definition at line 69 of file BaseSimulatorTool.h.

70  { return setupEvent(Gaudi::Hive::currentContext()); }

◆ simFlavor()

virtual ISF::SimulationFlavor ISF::ActsFatrasSimTool::simFlavor ( ) const
inlineoverridevirtual

Definition at line 221 of file ActsFatrasSimTool.h.

221  {
222  return ISF::Fatras; };

◆ simulate()

StatusCode ISF::ActsFatrasSimTool::simulate ( ISFParticle isp,
ISFParticleContainer secondaries,
McEventCollection mcEventCollection 
)
overridevirtual

Reimplemented from ISF::BaseSimulatorTool.

Definition at line 55 of file ActsFatrasSimTool.cxx.

57  {
58  ATH_MSG_VERBOSE("Particle " << isp << " received for simulation.");
59  // Check if particle passes filter, if there is one
60  if (!m_particleFilter.empty() && !m_particleFilter->passFilter(isp)) {
61  ATH_MSG_VERBOSE("ISFParticle " << isp << " does not pass selection. Ignoring.");
62  return StatusCode::SUCCESS;
63  }
64  // Process ParticleState from particle stack
65  // Wrap the input ISFParticle in an STL vector with size of 1
66  const ISF::ISFParticleVector ispVector(1, &isp);
67  ATH_CHECK(this->simulateVector(ispVector, secondaries, mcEventCollection));
68  ATH_MSG_VERBOSE("Simulation done");
69  return StatusCode::SUCCESS;
70 }

◆ simulateVector()

StatusCode ISF::ActsFatrasSimTool::simulateVector ( const ISFParticleVector particles,
ISFParticleContainer secondaries,
McEventCollection mcEventCollection,
McEventCollection = nullptr 
)
overridevirtual

Simulation call for vectors of particles.

Reimplemented from ISF::BaseSimulatorTool.

Definition at line 72 of file ActsFatrasSimTool.cxx.

75  {
76 
77  const EventContext& ctx = Gaudi::Hive::currentContext();
78  m_randomEngine->setSeed(m_randomEngineName, ctx);
79  CLHEP::HepRandomEngine* randomEngine = m_randomEngine->getEngine(ctx);
80  Generator generator(CLHEP::RandFlat::shoot(randomEngine->flat()));
81  ATH_MSG_VERBOSE(name() << " RNG seed " << CLHEP::RandFlat::shoot(randomEngine->flat()));
82  ATH_MSG_VERBOSE(name() << " received vector of size "
83  << particles.size() << " particles for simulation.");
84 
85  // construct the ACTS simulator
86  Acts::Navigator navigator( Acts::Navigator::Config{ m_trackingGeometry }, m_logger);
87  auto bField = std::make_shared<ATLASMagneticFieldWrapper>();
88  auto chargedStepper = ChargedStepper(std::move(bField));
89  auto neutralStepper = NeutralStepper();
90  auto chargedPropagator = ChargedPropagator(chargedStepper, navigator, m_logger->clone(Acts::Logging::Level::FATAL));
91  auto neutralPropagator = NeutralPropagator(neutralStepper, navigator, m_logger->clone(Acts::Logging::Level::FATAL));
92  ChargedSimulation simulatorCharged(std::move(chargedPropagator), m_logger->clone());
93  NeutralSimulation simulatorNeutral(std::move(neutralPropagator), m_logger->clone());
94  Simulation simulator=Simulation(std::move(simulatorCharged),std::move(simulatorNeutral));
95  ATH_MSG_VERBOSE(name() << " Min pT for interaction " << m_interact_minPt * Acts::UnitConstants::MeV << " GeV");
96  // Acts propagater options
97  simulator.charged.maxStepSize = m_maxStepSize;
98  simulator.charged.maxStep = m_maxStep;
99  simulator.charged.pathLimit = m_pathLimit;
100  simulator.charged.maxRungeKuttaStepTrials = m_maxRungeKuttaStepTrials;
101  simulator.charged.loopProtection = m_loopProtection;
102  simulator.charged.loopFraction = m_loopFraction;
103  simulator.charged.targetTolerance = m_tolerance;
104  simulator.charged.stepSizeCutOff = m_stepSizeCutOff;
105  // Create interaction list
106  simulator.charged.interactions = ActsFatras::makeStandardChargedElectroMagneticInteractions(m_interact_minPt * Acts::UnitConstants::MeV);
107  // get Geo and Mag map
108  ATH_MSG_VERBOSE(name() << " Getting per event Geo and Mag map");
109  Acts::MagneticFieldContext mctx = getMagneticFieldContext(ctx);
110  const ActsGeometryContext& gctx = m_trackingGeometryTool->getNominalGeometryContext();
111  auto anygctx = gctx.context();
112  // Loop over ISFParticleVector and process each separately
113  ATH_MSG_VERBOSE(name() << " Processing particles in ISFParticleVector.");
114  for (const auto isfp : particles) {
115  // ====ACTSFatras Simulation====
116  // //
117  // input/output particle and hits containers
118  // Convert to ActsFatras::Particle
119  // ISF: Energy, mass, and momentum are in MeV, position in mm
120  // Acts: Energy, mass, and momentum are in GeV, position in mm
121  std::vector<ActsFatras::Particle> input = std::vector<ActsFatras::Particle>{
122  ActsFatras::Particle(ActsFatras::Barcode().setVertexPrimary(0).setParticle(
123  HepMC::barcode(isfp)), static_cast<Acts::PdgParticle>(isfp->pdgCode()),
124  isfp->charge(),isfp->mass() * Acts::UnitConstants::MeV)
125  .setDirection(Acts::makeDirectionFromPhiEta(
126  isfp->momentum().phi(), isfp->momentum().eta()))
127  .setAbsoluteMomentum(isfp->momentum().mag() * Acts::UnitConstants::MeV)
128  .setPosition4(isfp->position().x(), isfp->position().y(),
129  isfp->position().z(), isfp->timeStamp())};
130  std::vector<ActsFatras::Particle> simulatedInitial;
131  std::vector<ActsFatras::Particle> simulatedFinal;
132  std::vector<ActsFatras::Hit> hits;
133  ATH_MSG_DEBUG(name() << " Propagating ActsFatras::Particle vertex|particle|generation|subparticle, " << input[0]);
134  // simulate
135  auto result=simulator.simulate(anygctx, mctx, generator, input, simulatedInitial, simulatedFinal, hits);
136  auto simulatedFailure=result.value();
137  if (simulatedFailure.size()>0){
138  for (const auto& simfail : simulatedFailure){
139  auto errCode = Acts::make_error_code(Acts::PropagatorError(simfail.error.value()));
140  ATH_MSG_WARNING(name() << " Particle id " <<simfail.particle.particleId()<< ": fail to be simulated during Propagation: " << errCode.message());
141  ATH_MSG_WARNING(name() << " Particle vertex|particle|generation|subparticle"<<simfail.particle << " starts from position" << Acts::toString(simfail.particle.position()) << " and direction " << Acts::toString(simfail.particle.direction()));
142  return StatusCode::SUCCESS;
143  }
144  }
145 
146  ATH_MSG_DEBUG(name() << " initial particle " << simulatedInitial[0]);
147  ATH_MSG_DEBUG(name() << " No. of particles after ActsFatras simulator: " << simulatedFinal.size());
148  // convert final particles to ISF::particle
149  for (const auto& factsp : simulatedFinal){
150  const auto pos = Amg::Vector3D(factsp.position()[Acts::ePos0],factsp.position()[Acts::ePos1],factsp.position()[Acts::ePos2]);
151  const auto mom = Amg::Vector3D(factsp.fourMomentum()[Acts::eMom0] / Acts::UnitConstants::MeV,factsp.fourMomentum()[Acts::eMom1] / Acts::UnitConstants::MeV,factsp.fourMomentum()[Acts::eMom2] / Acts::UnitConstants::MeV);
152  double mass = factsp.mass() / Acts::UnitConstants::MeV;
153  double charge = factsp.charge();
154  int pdgid = factsp.pdg();
155  double properTime = factsp.properTime();
156 
157  if (factsp.particleId() == simulatedInitial[0].particleId()) {
158  ATH_MSG_DEBUG(name() << " final particle " << factsp);
159  }
160  else {
161  ATH_MSG_DEBUG(name() << " secondaries particle " << factsp);
162  auto secisfp = std::make_unique<ISF::ISFParticle>(pos,
163  mom,
164  mass,
165  charge,
166  pdgid,
167  1, //status
168  properTime,
169  *isfp,
170  HepMC::UNDEFINED_ID // id
171  );
172  secondaries.push_back(secisfp.release());
173 
174  }
175  }
176  ATH_MSG_DEBUG(name() << " ActsFatras simulator hits: " << hits.size());
177  int i = 0;
178  for (const auto& hit : hits) {
179  ATH_MSG_DEBUG(name() << " hit pos: " << hit.position() );
180  ++i;
181  if (i>5) break;
182  }
183  ATH_MSG_DEBUG(name() << " No. of secondaries: " << secondaries.size());
184 
185  std::vector<ActsFatras::Particle>().swap(input);
186  std::vector<ActsFatras::Particle>().swap(simulatedInitial);
187  std::vector<ActsFatras::Particle>().swap(simulatedFinal);
188  std::vector<ActsFatras::Hit>().swap(hits);
189  }
190  return StatusCode::SUCCESS;
191 }

◆ sysInitialize()

virtual StatusCode ISF::BaseSimulatorTool::sysInitialize ( )
inlineoverridevirtualinherited

Gaudi sysInitialize() methods.

Definition at line 51 of file BaseSimulatorTool.h.

52  {
54  ATH_CHECK( serviceLocator()->service(m_chronoSvcName, m_chrono ) );
55  return StatusCode::SUCCESS;
56  }

Member Data Documentation

◆ ATLAS_THREAD_SAFE

ATHRNG::RNGWrapper* m_randomEngine ISF::ActsFatrasSimTool::ATLAS_THREAD_SAFE {}
private

Definition at line 240 of file ActsFatrasSimTool.h.

◆ m_chrono

IChronoStatSvc* ISF::BaseSimulatorTool::m_chrono {}
protectedinherited

The timing service for general usage.

Definition at line 120 of file BaseSimulatorTool.h.

◆ m_chronoSvcName

std::string ISF::BaseSimulatorTool::m_chronoSvcName {"ChronoStatSvc"}
protectedinherited

Name of the timing service - can be set by declareProperty()

Definition at line 117 of file BaseSimulatorTool.h.

◆ m_fieldCacheCondObjInputKey

SG::ReadCondHandleKey<AtlasFieldCacheCondObj> ISF::ActsFatrasSimTool::m_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"}
private

Definition at line 250 of file ActsFatrasSimTool.h.

◆ m_includeGgradient

Gaudi::Property<bool> ISF::ActsFatrasSimTool::m_includeGgradient {this, "IncludeGgradient", true, "Boolean flag for inclusion of d(dEds)d(q/p) into energy loss"}
private

Definition at line 264 of file ActsFatrasSimTool.h.

◆ m_interact_minPt

Gaudi::Property<double> ISF::ActsFatrasSimTool::m_interact_minPt
private
Initial value:
{this, "Interact_MinPt", 50.0,
"Min pT of the interactions (MeV)"}

Definition at line 259 of file ActsFatrasSimTool.h.

◆ m_logger

std::shared_ptr<const Acts::Logger> ISF::ActsFatrasSimTool::m_logger {nullptr}
private

Definition at line 253 of file ActsFatrasSimTool.h.

◆ m_loopFraction

Gaudi::Property<double> ISF::ActsFatrasSimTool::m_loopFraction
private
Initial value:
{this, "LoopFraction", 0.5,
"Allowed loop fraction, 1 is a full loop"}

Definition at line 277 of file ActsFatrasSimTool.h.

◆ m_loopProtection

Gaudi::Property<bool> ISF::ActsFatrasSimTool::m_loopProtection
private
Initial value:
{this, "LoopProtection", true,
"Loop protection, it adapts the pathLimit"}

Definition at line 275 of file ActsFatrasSimTool.h.

◆ m_maxRungeKuttaStepTrials

Gaudi::Property<double> ISF::ActsFatrasSimTool::m_maxRungeKuttaStepTrials
private
Initial value:
{this, "MaxRungeKuttaStepTrials", 10000,
"Maximum number of Runge-Kutta steps for the stepper step call"}

Definition at line 269 of file ActsFatrasSimTool.h.

◆ m_maxStep

Gaudi::Property<double> ISF::ActsFatrasSimTool::m_maxStep
private
Initial value:
{this, "MaxSteps", 1000,
"Max number of steps"}

Definition at line 267 of file ActsFatrasSimTool.h.

◆ m_maxStepSize

Gaudi::Property<double> ISF::ActsFatrasSimTool::m_maxStepSize
private
Initial value:
{this, "MaxStepSize", 3.0,
"Max step size (converted to Acts::UnitConstants::m)"}

Definition at line 271 of file ActsFatrasSimTool.h.

◆ m_meanEnergyLoss

Gaudi::Property<bool> ISF::ActsFatrasSimTool::m_meanEnergyLoss {this, "MeanEnergyLoss", true, "Toggle between mean and mode evaluation of energy loss"}
private

Definition at line 263 of file ActsFatrasSimTool.h.

◆ m_momentumCutOff

Gaudi::Property<double> ISF::ActsFatrasSimTool::m_momentumCutOff {this, "MomentumCutOff", 0., "Cut-off value for the momentum in SI units"}
private

Definition at line 265 of file ActsFatrasSimTool.h.

◆ m_particleFilter

PublicToolHandle<ISF::IParticleFilter> ISF::ActsFatrasSimTool::m_particleFilter
private
Initial value:
{
this, "ParticleFilter", "", "Particle filter kinematic cuts, etc."}

Definition at line 256 of file ActsFatrasSimTool.h.

◆ m_pathLimit

Gaudi::Property<double> ISF::ActsFatrasSimTool::m_pathLimit
private
Initial value:
{this, "PathLimit", 100.0,
"Track path limit (converted to Acts::UnitConstants::cm)"}

Definition at line 273 of file ActsFatrasSimTool.h.

◆ m_processTypeMap

Gaudi::Property<std::map<int,int> > ISF::ActsFatrasSimTool::m_processTypeMap
private
Initial value:
{this, "ProcessTypeMap",
{{0,0}, {1,201}, {2,14}, {3,3}, {4,121}}, "proessType map <ActsFatras,G4>"}

Definition at line 284 of file ActsFatrasSimTool.h.

◆ m_randomEngineName

Gaudi::Property<std::string> ISF::ActsFatrasSimTool::m_randomEngineName
private
Initial value:
{this, "RandomEngineName",
"RandomEngineName", "Name of random number stream"}

Definition at line 241 of file ActsFatrasSimTool.h.

◆ m_rngSvc

ServiceHandle<IAthRNGSvc> ISF::ActsFatrasSimTool::m_rngSvc {this, "RNGServec", "AthRNGSvc"}
private

Definition at line 239 of file ActsFatrasSimTool.h.

◆ m_stepSizeCutOff

Gaudi::Property<double> ISF::ActsFatrasSimTool::m_stepSizeCutOff
private
Initial value:
{this, "StepSizeCutOff", 0.,
"Cut-off value for the step size"}

Definition at line 281 of file ActsFatrasSimTool.h.

◆ m_tolerance

Gaudi::Property<double> ISF::ActsFatrasSimTool::m_tolerance
private
Initial value:
{this, "Tolerance", 0.0001,
"Tolerance for the error of the integration"}

Definition at line 279 of file ActsFatrasSimTool.h.

◆ m_trackingGeometry

std::shared_ptr<const Acts::TrackingGeometry> ISF::ActsFatrasSimTool::m_trackingGeometry
private

Definition at line 247 of file ActsFatrasSimTool.h.

◆ m_trackingGeometryTool

ToolHandle<IActsTrackingGeometryTool> ISF::ActsFatrasSimTool::m_trackingGeometryTool
private
Initial value:
{
this, "TrackingGeometryTool", "ActsTrackingGeometryTool"}

Definition at line 245 of file ActsFatrasSimTool.h.


The documentation for this class was generated from the following files:
ISF::ActsFatrasSimTool::ChargedPropagator
Acts::Propagator< ChargedStepper, Navigator > ChargedPropagator
Definition: ActsFatrasSimTool.h:180
ISF::ActsFatrasSimTool::m_interact_minPt
Gaudi::Property< double > m_interact_minPt
Definition: ActsFatrasSimTool.h:259
ISF::ActsFatrasSimTool::Generator
std::ranlux48 Generator
Definition: ActsFatrasSimTool.h:171
ISF::ActsFatrasSimTool::m_rngSvc
ServiceHandle< IAthRNGSvc > m_rngSvc
Definition: ActsFatrasSimTool.h:239
ISF::BaseSimulatorTool::m_chronoSvcName
std::string m_chronoSvcName
Name of the timing service - can be set by declareProperty()
Definition: BaseSimulatorTool.h:117
ISF::ActsFatrasSimTool::m_trackingGeometry
std::shared_ptr< const Acts::TrackingGeometry > m_trackingGeometry
Definition: ActsFatrasSimTool.h:247
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
get_generator_info.result
result
Definition: get_generator_info.py:21
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AtlasFieldCacheCondObj
Definition: AtlasFieldCacheCondObj.h:19
ISF::ActsFatrasSimTool::NeutralPropagator
Acts::Propagator< NeutralStepper, Navigator > NeutralPropagator
Definition: ActsFatrasSimTool.h:183
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
ISF::BaseSimulatorTool::releaseEvent
virtual StatusCode releaseEvent(const EventContext &) override
Release Event chain - in case of an end-of event action is needed.
Definition: BaseSimulatorTool.h:92
ISF::ActsFatrasSimTool::simulateVector
virtual StatusCode simulateVector(const ISFParticleVector &particles, ISFParticleContainer &secondaries, McEventCollection *mcEventCollection, McEventCollection *shadowTruth=nullptr) override
Simulation call for vectors of particles.
Definition: ActsFatrasSimTool.cxx:72
ISF::ActsFatrasSimTool::m_pathLimit
Gaudi::Property< double > m_pathLimit
Definition: ActsFatrasSimTool.h:273
python.SystemOfUnits.MeV
int MeV
Definition: SystemOfUnits.py:154
ISF::BaseSimulatorTool::m_chrono
IChronoStatSvc * m_chrono
The timing service for general usage.
Definition: BaseSimulatorTool.h:120
ISF::ActsFatrasSimTool::NeutralSimulation
SingleParticleSimulation< NeutralPropagator, NeutralInteractions, ActsFatras::NoSurface, ActsFatras::NoDecay > NeutralSimulation
Definition: ActsFatrasSimTool.h:199
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
xAOD::Particle
Particle_v1 Particle
Define the latest version of the particle class.
Definition: Event/xAOD/xAODParticleEvent/xAODParticleEvent/Particle.h:17
ISF::ActsFatrasSimTool::m_loopFraction
Gaudi::Property< double > m_loopFraction
Definition: ActsFatrasSimTool.h:277
dqt_zlumi_pandas.mass
mass
Definition: dqt_zlumi_pandas.py:170
ISF::ActsFatrasSimTool::m_loopProtection
Gaudi::Property< bool > m_loopProtection
Definition: ActsFatrasSimTool.h:275
makeActsAthenaLogger
std::unique_ptr< const Acts::Logger > makeActsAthenaLogger(IMessageSvc *svc, const std::string &name, int level, std::optional< std::string > parent_name)
Definition: Tracking/Acts/ActsInterop/src/Logger.cxx:64
ActsGeometryContext::context
Acts::GeometryContext context() const
Definition: ActsGeometryContext.h:45
ISF::ActsFatrasSimTool::ChargedStepper
Acts::EigenStepper< Acts::StepperExtensionList< Acts::DefaultExtension, Acts::DenseEnvironmentExtension > > ChargedStepper
Definition: ActsFatrasSimTool.h:179
ISF::ActsFatrasSimTool::m_maxStepSize
Gaudi::Property< double > m_maxStepSize
Definition: ActsFatrasSimTool.h:271
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ISF::ActsFatrasSimTool::ChargedSimulation
SingleParticleSimulation< ChargedPropagator, ChargedInteractions, HitSurfaceSelector, ActsFatras::NoDecay > ChargedSimulation
Definition: ActsFatrasSimTool.h:193
lumiFormat.i
int i
Definition: lumiFormat.py:92
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
HepMC::barcode
int barcode(const T *p)
Definition: Barcode.h:16
LArG4ShowerLibProcessing.hits
hits
Definition: LArG4ShowerLibProcessing.py:136
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
ISF::ISFParticleVector
std::vector< ISF::ISFParticle * > ISFParticleVector
ISFParticle vector.
Definition: ISFParticleContainer.h:26
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ISF::ActsFatrasSimTool::NeutralStepper
Acts::StraightLineStepper NeutralStepper
Definition: ActsFatrasSimTool.h:182
ISF::BaseSimulatorTool::BaseSimulatorTool
BaseSimulatorTool()
Default constructor.
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
HepMC::UNDEFINED_ID
constexpr int UNDEFINED_ID
Definition: MagicNumbers.h:55
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize
virtual StatusCode sysInitialize() override
Perform system initialization for an algorithm.
ISF::BaseSimulatorTool::setupEvent
virtual StatusCode setupEvent(const EventContext &) override
Setup Event chain - in case of a begin-of event action is needed.
Definition: BaseSimulatorTool.h:65
charge
double charge(const T &p)
Definition: AtlasPID.h:494
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
ISF::Fatras
@ Fatras
Definition: SimulationFlavor.h:22
ISF::ActsFatrasSimTool::getMagneticFieldContext
virtual Acts::MagneticFieldContext getMagneticFieldContext(const EventContext &) const
Definition: ActsFatrasSimTool.cxx:193
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
ISF::ActsFatrasSimTool::m_processTypeMap
Gaudi::Property< std::map< int, int > > m_processTypeMap
Definition: ActsFatrasSimTool.h:284
ISF::BaseSimulatorTool::initialize
virtual StatusCode initialize() override
Definition: BaseSimulatorTool.h:59
mc.generator
generator
Configure Herwig7 These are the commands corresponding to what would go into the regular Herwig infil...
Definition: mc.MGH7_FxFx_H71-DEFAULT_test.py:18
ISF::ActsFatrasSimTool::m_logger
std::shared_ptr< const Acts::Logger > m_logger
Definition: ActsFatrasSimTool.h:253
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LArG4FSStartPointFilter.particles
list particles
Definition: LArG4FSStartPointFilter.py:84
ISF::ActsFatrasSimTool::m_maxStep
Gaudi::Property< double > m_maxStep
Definition: ActsFatrasSimTool.h:267
Simulation
Definition: BeamEffectsAlg.cxx:21
ISF::ActsFatrasSimTool::m_maxRungeKuttaStepTrials
Gaudi::Property< double > m_maxRungeKuttaStepTrials
Definition: ActsFatrasSimTool.h:269
ISF::ActsFatrasSimTool::m_stepSizeCutOff
Gaudi::Property< double > m_stepSizeCutOff
Definition: ActsFatrasSimTool.h:281
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
ISF::ActsFatrasSimTool::m_trackingGeometryTool
ToolHandle< IActsTrackingGeometryTool > m_trackingGeometryTool
Definition: ActsFatrasSimTool.h:245
ISF::ActsFatrasSimTool::m_fieldCacheCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Definition: ActsFatrasSimTool.h:250
ISF::ActsFatrasSimTool::Simulation
ActsFatras::Simulation< ChargedSelector, ChargedSimulation, NeutralSelector, NeutralSimulation > Simulation
Definition: ActsFatrasSimTool.h:202
ISF::ActsFatrasSimTool::m_particleFilter
PublicToolHandle< ISF::IParticleFilter > m_particleFilter
Definition: ActsFatrasSimTool.h:256
ISF::ActsFatrasSimTool::m_randomEngineName
Gaudi::Property< std::string > m_randomEngineName
Definition: ActsFatrasSimTool.h:241
ISF::ActsFatrasSimTool::m_tolerance
Gaudi::Property< double > m_tolerance
Definition: ActsFatrasSimTool.h:279