ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
iFatras::TransportTool Class Reference

#include <TransportTool.h>

Inheritance diagram for iFatras::TransportTool:
Collaboration diagram for iFatras::TransportTool:

Public Member Functions

 TransportTool (const std::string &, const std::string &, const IInterface *)
 Constructor. More...
 
virtual ~TransportTool ()
 Destructor. More...
 
virtual StatusCode initialize () override
 AlgTool initialize method. More...
 
virtual StatusCode finalize () override
 AlgTool finalize method. More...
 
virtual ISF::ISFParticleprocess (const ISF::ISFParticle &isp, CLHEP::HepRandomEngine *) const override
 Creates a new ParticleState from a given ParticleState, universal transport tool. More...
 

Private Member Functions

template<class T >
StatusCode retrieveTool (ToolHandle< T > &thandle)
 templated Tool retrieval - gives unique handling & look and feel More...
 

Private Attributes

ServiceHandle< IAtRndmGenSvcm_rndGenSvc
 Random Generator service
More...
 
CLHEP::HepRandomEngine * m_randomEngine
 
std::string m_randomEngineName
 Name of the random number stream. More...
 
bool m_validationOutput
 Validation output with histogram service. More...
 
ToolHandle< IPhysicsValidationToolm_validationTool
 the ntuple More...
 
ToolHandle< IParticleDecayHelperm_particleDecayHelper
 Particle Decay. More...
 
ToolHandle< ISimHitCreatorm_simHitCreatorID
 The SimHit Creation. More...
 
ToolHandle< ISimHitCreatorm_simHitCreatorMS
 
ToolHandle< Trk::ITimedExtrapolatorm_extrapolator
 The Extrapolator setup. More...
 
ToolHandle< ISF::IParticleFilterm_trackFilter
 Filtering setup & other ISF stuff. More...
 
ToolHandle< ISF::IParticleFilterm_neutralHadronFilter
 
ToolHandle< ISF::IParticleFilterm_photonFilter
 
ToolHandle< ISF::IParticleHelperm_iparticleHelper
 
ToolHandle< IProcessSamplingToolm_samplingTool
 
Trk::PdgToParticleHypothesis m_pdgToParticleHypothesis
 
bool m_errorPropagation
 
bool m_hitsOff
 

Detailed Description

Fatras AlgTool to create a ISFParticle at a volume entry/exit

Author
Sharka Todorova Sarka.Todorova -at- cern.ch
Andreas.Salzburger -at- cern.ch

Definition at line 54 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.h.

Constructor & Destructor Documentation

◆ TransportTool()

iFatras::TransportTool::TransportTool ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Constructor.

Definition at line 43 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.cxx.

46  : base_class(t,n,p),
47  m_rndGenSvc("AtDSFMTGenSvc", n),
48  m_randomEngine(nullptr),
49  m_randomEngineName("FatrasRnd"),
50  m_validationOutput(false),
51  m_validationTool(""),
55  m_extrapolator(""),
56  m_trackFilter(""),
58  m_photonFilter(""),
60  m_samplingTool(""),
61  m_errorPropagation(false),
62  m_hitsOff(false)
63 {
64  // validation output section
65  declareProperty( "ValidationOutput", m_validationOutput );
66  declareProperty( "PhysicsValidationTool", m_validationTool );
67  // tool handle for the particle decayer
68  declareProperty( "ParticleDecayHelper", m_particleDecayHelper );
69  // tool handle for the track creator
70  declareProperty( "SimHitCreatorID", m_simHitCreatorID );
71  declareProperty( "SimHitCreatorMS", m_simHitCreatorMS );
72  // tool handles for extrapolator(s)
73  declareProperty( "Extrapolator", m_extrapolator );
74  // tool handles for the filtering setup
75  declareProperty( "TrackFilter", m_trackFilter );
76  declareProperty( "NeutralFilter", m_neutralHadronFilter );
77  declareProperty( "PhotonFilter", m_photonFilter );
78  // tool handles ISF Framework
79  declareProperty( "ParticleHelper", m_iparticleHelper );
80  declareProperty( "TurnOffHitCreation", m_hitsOff );
81  declareProperty( "ProcessSamplingTool", m_samplingTool );
82  declareProperty("DoErrorPropagation", m_errorPropagation );
83  // service handles
84  declareProperty( "RandomNumberService", m_rndGenSvc );
85 }

◆ ~TransportTool()

iFatras::TransportTool::~TransportTool ( )
virtual

Destructor.

Definition at line 91 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.cxx.

92 {
93  delete m_randomEngine;
94 }

Member Function Documentation

◆ finalize()

StatusCode iFatras::TransportTool::finalize ( )
overridevirtual

AlgTool finalize method.

Definition at line 145 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.cxx.

146 {
147  ATH_MSG_DEBUG( "finalize() successful" );
148  return StatusCode::SUCCESS;
149 }

◆ initialize()

StatusCode iFatras::TransportTool::initialize ( )
overridevirtual

AlgTool initialize method.

Definition at line 101 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.cxx.

102 {
103 
104  ATH_MSG_DEBUG( "initialize()" );
105 
106  // Retrieve the tools one by one
107  if (retrieveTool<iFatras::ISimHitCreator>(m_simHitCreatorID).isFailure())
108  return StatusCode::FAILURE;
109  if (retrieveTool<iFatras::ISimHitCreator>(m_simHitCreatorMS).isFailure())
110  return StatusCode::FAILURE;
111  if (retrieveTool<Trk::ITimedExtrapolator>(m_extrapolator).isFailure())
112  return StatusCode::FAILURE;
113  if (retrieveTool<iFatras::IParticleDecayHelper>(m_particleDecayHelper).isFailure())
114  return StatusCode::FAILURE;
115  if (retrieveTool<ISF::IParticleFilter>(m_trackFilter).isFailure())
116  return StatusCode::FAILURE;
117  if (retrieveTool<ISF::IParticleFilter>(m_photonFilter).isFailure())
118  return StatusCode::FAILURE;
119  if (retrieveTool<ISF::IParticleFilter>(m_neutralHadronFilter).isFailure())
120  return StatusCode::FAILURE;
121  if (retrieveTool<ISF::IParticleHelper>(m_iparticleHelper).isFailure())
122  return StatusCode::FAILURE;
123  if (retrieveTool<iFatras::IProcessSamplingTool>(m_samplingTool).isFailure())
124  return StatusCode::FAILURE;
125  ATH_CHECK( m_validationTool.retrieve( DisableTool{ m_validationTool.empty() || !m_validationOutput } ) );
126 
127  if ( m_rndGenSvc.retrieve().isFailure() ){
128  ATH_MSG_FATAL( "Could not retrieve " << m_rndGenSvc );
129  return StatusCode::FAILURE;
130  }
131  //Get own engine with own seeds:
133  if (!m_randomEngine) {
134  ATH_MSG_FATAL( "Could not get random engine '" << m_randomEngineName << "'" );
135  return StatusCode::FAILURE;
136  }
137  ATH_MSG_DEBUG( "finalize() successful" );
138  return StatusCode::SUCCESS;
139 }

◆ process()

ISF::ISFParticle * iFatras::TransportTool::process ( const ISF::ISFParticle isp,
CLHEP::HepRandomEngine *   
) const
overridevirtual

Creates a new ParticleState from a given ParticleState, universal transport tool.

Definition at line 155 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.cxx.

156 {
157  // copy the current particle onto the particle clipboard
159 
160  // if process/generation not set, assume primary
161  //if (m_validationOutput && !isp.getUserInformation()) {
162  // ISF::ParticleUserInformation* validInfo = new ISF::ParticleUserInformation();
163  // validInfo->setProcess(0);
164  // validInfo->setGeneration(0);
165  // isp.setUserInformation(validInfo);
166  //}
167 
168  ATH_MSG_VERBOSE ("[ fatras transport ] processing particle "<<isp.pdgCode() );
169 
170  std::vector<Trk::HitInfo>* hitVector = nullptr; // hit or no hit collection
171 
172  int absPdg = abs(isp.pdgCode());
173  bool photon = (absPdg == 22);
174  bool geantino = (absPdg == 999);
175  bool neutrino = (absPdg == 12) || (absPdg == 14) || (absPdg == 16);
176  bool charged = photon || geantino ? false : (isp.charge()*isp.charge() > 0) ;
177 
178  // particle Hypothesis for the extrapolation
179 
181 
182  // geantinos not handled by PdgToParticleHypothesis - fix there
183  if ( absPdg == 999 ) pHypothesis = Trk::geantino;
184 
185  // chose the filter & extrapolator
186  const Trk::ITimedExtrapolator* processor = &(*m_extrapolator);
187  const ISF::IParticleFilter* filter = nullptr;
188 
189  if ( photon ) {
190  ATH_MSG_VERBOSE( "[ fatras transport ] Photon - use transport tool for photons");
191  filter = m_photonFilter.empty() ? nullptr : &(*m_photonFilter);
192  } else if ( neutrino ) {
193  ATH_MSG_VERBOSE( "[ fatras transport ] Particle is neutrino -> particle ignored.");
194  return nullptr;
195  } else if ( !charged ){
196  ATH_MSG_VERBOSE( "[ fatras transport ] Particle not charged - use transport tool for neutrals");
197  filter = m_neutralHadronFilter.empty() ? nullptr : &(*m_neutralHadronFilter);
198  } else {
199  ATH_MSG_VERBOSE( "[ fatras transport ] Particle is a lepton or charged hadron");
200  filter = m_trackFilter.empty() ? nullptr : &(*m_trackFilter);
201  }
202 
203  if (filter)
204  ATH_MSG_DEBUG( "[ fatras transport ] Determined processor and filter.");
205  else
206  ATH_MSG_DEBUG( "[ fatras transport ] Determined processor w/o filter.");
207 
208  // now transport the particle - if it passes the filter
209  if ( !processor || ( filter && !filter->passFilter(isp)) ) {
210  ATH_MSG_VERBOSE( "[ fatras transport ] Filter not passed, ignore particle.");
211  return nullptr;
212  }
213 
214  ATH_MSG_VERBOSE( "[ fatras transport ] The StackParticle passed filter - starting transport.");
215  // input parameters : curvilinear parameters
216  Trk::CurvilinearParameters inputPar(isp.position(),isp.momentum(),isp.charge());
217 
218  // stable vs. unstable check
219  double freepath = ( !m_particleDecayHelper.empty()) ? m_particleDecayHelper->freePath(isp) : - 1.;
220  ATH_MSG_VERBOSE( "[ fatras transport ] Particle free path : " << freepath);
221  // path limit -> time limit ( TODO : extract life-time directly from decay helper )
222  double tDec = freepath > 0. ? freepath : -1.;
223  int decayProc = 0;
224 
225  // beta calculated here for further use in validation
226  double mass = Trk::ParticleMasses::mass[pHypothesis];
227  double mom = isp.momentum().mag();
228  double beta = mom/sqrt(mom*mom+mass*mass);
229 
230  if ( tDec>0.) {
231  tDec = tDec/beta/CLHEP::c_light + isp.timeStamp();
232  decayProc = 201;
233  }
234 
235  Trk::TimeLimit timeLim(tDec,isp.timeStamp(),decayProc);
236 
237  // prompt decay
238  if ( freepath>0. && freepath<0.01 ) {
239  if (!m_particleDecayHelper.empty()) {
240  ATH_MSG_VERBOSE( "[ fatras transport ] Decay is triggered for input particle.");
241  m_particleDecayHelper->decay(isp,isp.position(),isp.momentum(),isp.timeStamp()); // Registers TruthIncident internally
242  }
243 
244  // validation mode - for all particle registered into stack
245  if ( m_validationOutput && m_validationTool.isEnabled() ) {
246  int endProcess = decayProc;
247  m_validationTool->saveISFParticleInfo(isp,endProcess,&inputPar,timeLim.time,0.);
248  }
249 
250  return nullptr;
251  }
252 
253  // presample interactions if not done already
254  Trk::PathLimit pathLim(-1.,0);
255  const ISF::MaterialPathInfo* matLimit = isp.getUserInformation() ? isp.getUserInformation()->materialLimit() : nullptr;
256  if (matLimit) {
257  pathLim=Trk::PathLimit( matLimit->dMax,matLimit->process);
258  pathLim.updateMat(matLimit->dCollected,13.,0.); // arbitrary Z choice : update MaterialPathInfo
259  } else if (absPdg!=999 && pHypothesis<99) { // need to resample
260  pathLim = m_samplingTool->sampleProcess(m_randomEngine, isp.momentum().mag(),isp.charge(),pHypothesis);
261  }
262 
263  // use extrapolation with path limit - automatic exit at subdetector boundary
264  // additional exercise due to the current mismatch in geoID
265  Trk::GeometrySignature nextGeoID=static_cast<Trk::GeometrySignature>(isp.nextGeoID());
266 
267  std::unique_ptr<const Trk::TrackParameters> eParameters = nullptr;
268 
269  // hit creation/energy deposit
270  hitVector = (!m_hitsOff) ? new std::vector<Trk::HitInfo> : nullptr;
271  if (hitVector) ATH_MSG_VERBOSE( "[ fatras transport ] hit creation activated");
272 
273  if ( !charged ) {
274 
275  eParameters = processor->transportNeutralsWithPathLimit(inputPar,
276  pathLim,
277  timeLim,
279  pHypothesis,
280  hitVector,
281  nextGeoID);
282 
283  } else {
284 
286  // input covariance matrix
287  AmgSymMatrix(5) inputCov;
288  inputCov.setZero();
289  std::unique_ptr<Trk::TrackParameters> measuredInputPar =
290  inputPar.associatedSurface()
291  .createUniqueTrackParameters(inputPar.parameters()[0],
292  inputPar.parameters()[1],
293  inputPar.parameters()[2],
294  inputPar.parameters()[3],
295  inputPar.parameters()[4],
296  std::move(inputCov));
297 
298  eParameters = processor->extrapolateWithPathLimit(*measuredInputPar,
299  pathLim,
300  timeLim,
302  pHypothesis,
303  hitVector,
304  nextGeoID);
305 
306  } else {
307 
308  eParameters = processor->extrapolateWithPathLimit(inputPar,
309  pathLim,
310  timeLim,
312  pHypothesis,
313  hitVector,
314  nextGeoID);
315  }
316  }
317 
318  // create hits
319  if (hitVector && !hitVector->empty()){
320  ATH_MSG_VERBOSE( "[ fatras transport ] processing .");
321  // create the hits from the parameters vector
322  if ( isp.nextGeoID()==AtlasDetDescr::fAtlasID ) {
323  if (!m_simHitCreatorID.empty()) m_simHitCreatorID->createHits(isp, *hitVector);
324  ATH_MSG_VERBOSE( "[ fatras transport ] ID hits processed.");
325  } else if ( isp.nextGeoID()==AtlasDetDescr::fUndefinedAtlasRegion ) {
326  ATH_MSG_WARNING( "[ fatras transport ] hit vector without Geo info");
327  } else if ( isp.nextGeoID()==AtlasDetDescr::fAtlasMS ) {
328  if (!m_simHitCreatorMS.empty()) m_simHitCreatorMS->createHits(isp, *hitVector);
329  ATH_MSG_VERBOSE( "[ fatras transport ] MS hits processed.");
330  }
331  // memory cleanup
332  delete hitVector; hitVector = nullptr;
333  }
334 
335  // additional exercise due to the current mismatch in geoID
337  if (nextGeoID<99) {
338  geoID = static_cast<AtlasDetDescr::AtlasRegion>(nextGeoID);
339  }
340 
341  // validation mode - for all particle registered into stack
342  if ( m_validationOutput && m_validationTool.isEnabled() ) {
343 
344  int dProc = ( timeLim.tMax>0. && timeLim.tMax<=timeLim.time ) ? timeLim.process : 0;
345  int mProc = ( pathLim.x0Max>0. && ( pathLim.x0Max <= pathLim.x0Collected ||
346  (pathLim.process>100 && pathLim.x0Max <= pathLim.l0Collected))) ? pathLim.process : 0;
347  int endProcess = eParameters ? 0 : ( dProc > mProc ? dProc : mProc );
348 
349  m_validationTool->saveISFParticleInfo(isp,endProcess,eParameters.get(),timeLim.time,pathLim.x0Collected);
350 
351  }
352 
353  // create the updated particle at the end of processing step
354  ISF::ISFParticle* uisp = eParameters ? m_iparticleHelper->updatedParticle(isp,
355  eParameters->position(),
356  eParameters->momentum(),
357  timeLim.time-isp.timeStamp()) : nullptr; // update expects time difference
358  // free memory
359  if ( hitVector ) {
360  delete hitVector;
361  }
362 
363  if (uisp && m_validationOutput) {
364  // save validation info
366  validInfo->setProcess(0);
367  if (isp.getUserInformation()) validInfo->setGeneration(isp.getUserInformation()->generation());
368  else validInfo->setGeneration(0); // assume primary parent
369  uisp->setUserInformation(validInfo);
370  }
371 
372  // TODO save material ? if (uisp && m_validationOutput) uisp->setX0(pathLim.x0Collected,m_eloss);
373 
374  // trigger decay or return to stack
375 
376  if (uisp && timeLim.tMax>0. && timeLim.time >=timeLim.tMax ) {
377  if (!m_particleDecayHelper.empty()) {
378  ATH_MSG_VERBOSE( "[ fatras transport ] Decay is triggered for input particle.");
379  m_particleDecayHelper->decay(*uisp,uisp->position(),uisp->momentum(),uisp->timeStamp()); // Registers TruthIncident internally
380  }
381  delete uisp;
382  return nullptr;
383  } else if (uisp) {
384  ATH_MSG_VERBOSE( "[ fatras transport ] Particle transported to detector boundary, return to stack, timing:" << uisp->timeStamp());
385  uisp->setNextGeoID(geoID);
386  return uisp;
387  }
388 
389  // nothing to be returned to the stack (and we should not get here at all)
390  return nullptr;
391 }

◆ retrieveTool()

template<class T >
StatusCode iFatras::TransportTool::retrieveTool ( ToolHandle< T > &  thandle)
inlineprivate

templated Tool retrieval - gives unique handling & look and feel

Definition at line 76 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.h.

76  {
77  if (!thandle.empty() && thandle.retrieve().isFailure()){
78  ATH_MSG_FATAL( "[ fatras setup ] Cannot retrieve " << thandle << ". Abort.");
79  return StatusCode::FAILURE;
80  }
81  else {
82  ATH_MSG_DEBUG("[ fatras setup ] Successfully retrieved " << thandle);
83  }
84  return StatusCode::SUCCESS;
85  }

Member Data Documentation

◆ m_errorPropagation

bool iFatras::TransportTool::m_errorPropagation
private

◆ m_extrapolator

ToolHandle<Trk::ITimedExtrapolator> iFatras::TransportTool::m_extrapolator
private

The Extrapolator setup.

Definition at line 109 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.h.

◆ m_hitsOff

bool iFatras::TransportTool::m_hitsOff
private

◆ m_iparticleHelper

ToolHandle<ISF::IParticleHelper> iFatras::TransportTool::m_iparticleHelper
private

◆ m_neutralHadronFilter

ToolHandle<ISF::IParticleFilter> iFatras::TransportTool::m_neutralHadronFilter
private

◆ m_particleDecayHelper

ToolHandle<IParticleDecayHelper> iFatras::TransportTool::m_particleDecayHelper
private

Particle Decay.

Definition at line 102 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.h.

◆ m_pdgToParticleHypothesis

Trk::PdgToParticleHypothesis iFatras::TransportTool::m_pdgToParticleHypothesis
private

◆ m_photonFilter

ToolHandle<ISF::IParticleFilter> iFatras::TransportTool::m_photonFilter
private

◆ m_randomEngine

CLHEP::HepRandomEngine* iFatras::TransportTool::m_randomEngine
private

◆ m_randomEngineName

std::string iFatras::TransportTool::m_randomEngineName
private

Name of the random number stream.

Definition at line 94 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.h.

◆ m_rndGenSvc

ServiceHandle<IAtRndmGenSvc> iFatras::TransportTool::m_rndGenSvc
private

Random Generator service

Definition at line 92 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.h.

◆ m_samplingTool

ToolHandle<IProcessSamplingTool> iFatras::TransportTool::m_samplingTool
private

◆ m_simHitCreatorID

ToolHandle<ISimHitCreator> iFatras::TransportTool::m_simHitCreatorID
private

The SimHit Creation.

Definition at line 105 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.h.

◆ m_simHitCreatorMS

ToolHandle<ISimHitCreator> iFatras::TransportTool::m_simHitCreatorMS
private

◆ m_trackFilter

ToolHandle<ISF::IParticleFilter> iFatras::TransportTool::m_trackFilter
private

Filtering setup & other ISF stuff.

Definition at line 112 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.h.

◆ m_validationOutput

bool iFatras::TransportTool::m_validationOutput
private

Validation output with histogram service.

turn validation mode on/off

Definition at line 98 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.h.

◆ m_validationTool

ToolHandle<IPhysicsValidationTool> iFatras::TransportTool::m_validationTool
private

the ntuple

Definition at line 99 of file ISF_Fatras/ISF_FatrasTools/src/TransportTool.h.


The documentation for this class was generated from the following files:
iFatras::TransportTool::m_errorPropagation
bool m_errorPropagation
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:121
iFatras::TransportTool::m_randomEngineName
std::string m_randomEngineName
Name of the random number stream.
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:94
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
iFatras::TransportTool::m_simHitCreatorID
ToolHandle< ISimHitCreator > m_simHitCreatorID
The SimHit Creation.
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:105
ISF::ISFParticle::setNextGeoID
void setNextGeoID(AtlasDetDescr::AtlasRegion geoID)
register the next AtlasDetDescr::AtlasRegion
Trk::PdgToParticleHypothesis::convert
Trk::ParticleHypothesis convert(int pdg, bool &stable, bool &exiting, double charge=1.) const
Converter method : PDG -> Particle Hyptothesis.
iFatras::TransportTool::m_trackFilter
ToolHandle< ISF::IParticleFilter > m_trackFilter
Filtering setup & other ISF stuff.
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:112
Base_Fragment.mass
mass
Definition: Sherpa_i/share/common/Base_Fragment.py:59
iFatras::TransportTool::m_randomEngine
CLHEP::HepRandomEngine * m_randomEngine
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:93
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
ISF::ParticleUserInformation::setProcess
void setProcess(int proc)
Definition: ParticleUserInformation.h:90
ISF::ParticleClipboard::getInstance
static ParticleClipboard & getInstance()
get the singleton instance
Definition: ParticleClipboard.h:61
AtlasDetDescr::AtlasRegion
AtlasRegion
Definition: AtlasRegion.h:27
hitVector
std::vector< FPGATrackSimHit > hitVector
Definition: FPGATrackSimCluster.h:22
ISF::ISFParticle
Definition: ISFParticle.h:42
iFatras::TransportTool::m_validationTool
ToolHandle< IPhysicsValidationTool > m_validationTool
the ntuple
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:99
ISF::MaterialPathInfo::dMax
float dMax
Definition: ParticleUserInformation.h:29
ISF::MaterialPathInfo::dCollected
float dCollected
Definition: ParticleUserInformation.h:30
ISF::ISFParticle::pdgCode
int pdgCode() const
PDG value.
AtlasDetDescr::fUndefinedAtlasRegion
@ fUndefinedAtlasRegion
Definition: AtlasRegion.h:29
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Trk::ITimedExtrapolator::extrapolateWithPathLimit
virtual std::unique_ptr< const Trk::TrackParameters > extrapolateWithPathLimit(const Trk::TrackParameters &parm, Trk::PathLimit &pathLim, Trk::TimeLimit &time, Trk::PropDirection dir, Trk::ParticleHypothesis particle, std::vector< HitInfo > *&hitVector, Trk::GeometrySignature &nextGeoId, const Trk::TrackingVolume *boundaryVol=nullptr) const =0
Extrapolation method allowing treatment of unstable particles.
xAOD::geantino
@ geantino
Definition: TrackingPrimitives.h:193
iFatras::TransportTool::m_rndGenSvc
ServiceHandle< IAtRndmGenSvc > m_rndGenSvc
Random Generator service
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:92
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:50
iFatras::TransportTool::m_validationOutput
bool m_validationOutput
Validation output with histogram service.
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:98
xAOD::TrackParameters
TrackParameters_v1 TrackParameters
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParameters.h:11
ISF::ISFParticle::position
const Amg::Vector3D & position() const
The current position of the ISFParticle.
covarianceTool.filter
filter
Definition: covarianceTool.py:514
RunExEngineTest.PathLimit
PathLimit
Definition: RunExEngineTest.py:61
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Trk::ITimedExtrapolator::transportNeutralsWithPathLimit
virtual std::unique_ptr< const Trk::TrackParameters > transportNeutralsWithPathLimit(const Trk::TrackParameters &parm, Trk::PathLimit &pathLim, Trk::TimeLimit &time, Trk::PropDirection dir, Trk::ParticleHypothesis particle, std::vector< HitInfo > *&hitVector, Trk::GeometrySignature &nextGeoId, const Trk::TrackingVolume *boundaryVol=nullptr) const =0
Transport method for neutral and/or unstable particles.
iFatras::TransportTool::m_particleDecayHelper
ToolHandle< IParticleDecayHelper > m_particleDecayHelper
Particle Decay.
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:102
iFatras::TransportTool::m_hitsOff
bool m_hitsOff
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:122
Trk::ITimedExtrapolator
Definition: ITimedExtrapolator.h:41
Trk::GeometrySignature
GeometrySignature
Definition: GeometrySignature.h:24
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
AtlasDetDescr::fAtlasMS
@ fAtlasMS
Definition: AtlasRegion.h:36
ISF::ISFParticle::nextGeoID
AtlasDetDescr::AtlasRegion nextGeoID() const
next geoID the particle will be simulated in
iFatras::TransportTool::m_iparticleHelper
ToolHandle< ISF::IParticleHelper > m_iparticleHelper
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:115
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ISF::ParticleUserInformation
Definition: ParticleUserInformation.h:52
Trk::geantino
@ geantino
Definition: ParticleHypothesis.h:26
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Trk::CurvilinearParametersT
Definition: CurvilinearParametersT.h:48
Trk::TimeLimit
Definition: HelperStructs.h:58
iFatras::TransportTool::m_neutralHadronFilter
ToolHandle< ISF::IParticleFilter > m_neutralHadronFilter
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:113
ISF::ParticleUserInformation::setGeneration
void setGeneration(int gen)
Definition: ParticleUserInformation.h:92
Trk::ParticleMasses::mass
constexpr double mass[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:53
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
ISF::ISFParticle::timeStamp
double timeStamp() const
Timestamp of the ISFParticle.
iFatras::TransportTool::m_photonFilter
ToolHandle< ISF::IParticleFilter > m_photonFilter
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:114
ISF::ISFParticle::momentum
const Amg::Vector3D & momentum() const
The current momentum vector of the ISFParticle.
AtlasDetDescr::fAtlasID
@ fAtlasID
Definition: AtlasRegion.h:33
ISF::ISFParticle::setUserInformation
void setUserInformation(ParticleUserInformation *userInfo)
Trk::PathLimit
Definition: HelperStructs.h:34
python.PhysicalConstants.c_light
float c_light
Definition: PhysicalConstants.py:63
ISF::ISFParticle::charge
double charge() const
charge of the particle
iFatras::TransportTool::m_samplingTool
ToolHandle< IProcessSamplingTool > m_samplingTool
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:116
ISF::MaterialPathInfo
Definition: ParticleUserInformation.h:28
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
ISF::ParticleUserInformation::materialLimit
const MaterialPathInfo * materialLimit() const
Definition: ParticleUserInformation.h:88
xAOD::photon
@ photon
Definition: TrackingPrimitives.h:199
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
iFatras::TransportTool::m_simHitCreatorMS
ToolHandle< ISimHitCreator > m_simHitCreatorMS
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:106
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
ISF::ParticleClipboard::setParticle
void setParticle(const ISF::ISFParticle &p)
save a particle on the clipboard
Definition: ParticleClipboard.h:67
MuonParameters::beta
@ beta
Definition: MuonParamDefs.h:144
ISF::ParticleUserInformation::generation
int generation() const
Definition: ParticleUserInformation.h:86
iFatras::TransportTool::m_pdgToParticleHypothesis
Trk::PdgToParticleHypothesis m_pdgToParticleHypothesis
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:119
ISF::MaterialPathInfo::process
int process
Definition: ParticleUserInformation.h:31
iFatras::TransportTool::m_extrapolator
ToolHandle< Trk::ITimedExtrapolator > m_extrapolator
The Extrapolator setup.
Definition: ISF_Fatras/ISF_FatrasTools/src/TransportTool.h:109
CP::charged
@ charged
Definition: Reconstruction/PFlow/PFlowUtils/PFlowUtils/PFODefs.h:11
ISF::ISFParticle::getUserInformation
const ParticleUserInformation * getUserInformation() const
get/set ParticleUserInformation
ISF::IParticleFilter
Definition: IParticleFilter.h:28