Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Trk::ParticleCaloExtensionTool Class Referencefinal

#include <ParticleCaloExtensionTool.h>

Inheritance diagram for Trk::ParticleCaloExtensionTool:
Collaboration diagram for Trk::ParticleCaloExtensionTool:

Public Types

typedef std::unordered_map< size_t, std::unique_ptr< Trk::CaloExtension > > Cache
 

Public Member Functions

 ParticleCaloExtensionTool (const std::string &, const std::string &, const IInterface *)
 
virtual ~ParticleCaloExtensionTool ()
 
virtual StatusCode initialize () override final
 
virtual std::unique_ptr< Trk::CaloExtensioncaloExtension (const EventContext &ctx, const xAOD::IParticle &particle) const override final
 Method returning the calo layers crossed by the IParticle track or the IParticle itself if it is neutral/TruthParticle The memory ownership is handled by the unique_ptr. More...
 
virtual const Trk::CaloExtensioncaloExtension (const EventContext &ctx, const xAOD::IParticle &particle, IParticleCaloExtensionTool::Cache &cache) const override final
 Method to return the calo layers crossed (CaloExtension) by the IParticle track or the IParticle itself if it is neutral/TruthParticle. More...
 
virtual const Trk::CaloExtensioncaloExtension (const xAOD::IParticle &particle, const CaloExtensionCollection &cache) const override final
 Method to return the calo layers crossed (CaloExtension) by the IParticle track or the IParticle itself if it is neutral/TruthParticle It returns the result stored in the CaloExtensionCollection created by the caloExtensionCollection method below. More...
 
virtual StatusCode caloExtensionCollection (const EventContext &ctx, const xAOD::IParticleContainer &particles, const std::vector< bool > &mask, CaloExtensionCollection &caloextensions) const override final
 Method that can be used by algorithms that : A. More...
 
virtual std::unique_ptr< Trk::CaloExtensioncaloExtension (const EventContext &ctx, const TrackParameters &startPars, PropDirection propDir, ParticleHypothesis particleType) const override final
 Method returning a unique_ptr to the caloExtension given the relevant starting point parameters , direction and particle hypothesis. More...
 
std::vector< std::unique_ptr< Trk::Surface > > caloSurfacesFromLayers (const std::vector< CaloSampling::CaloSample > &clusterLayers, double eta, const CaloDetDescrManager &caloDD) const override final
 Method returning a vector of calo surfaces give calo layers/samplings. More...
 
virtual std::vector< std::pair< CaloSampling::CaloSample, std::unique_ptr< const Trk::TrackParameters > > > surfaceCaloExtension (const EventContext &ctx, const TrackParameters &startPars, const std::vector< CaloSampling::CaloSample > &clusterLayers, const std::vector< std::unique_ptr< Trk::Surface >> &caloSurfaces, ParticleHypothesis particleType) const override final
 Method returning a vector of the Track Parameters at layers/samplings. More...
 
virtual std::vector< std::pair< CaloSampling::CaloSample, std::unique_ptr< const Trk::TrackParameters > > > layersCaloExtension (const EventContext &ctx, const TrackParameters &startPars, const std::vector< CaloSampling::CaloSample > &clusterLayers, double eta, const CaloDetDescrManager &caloDD, ParticleHypothesis particleType) const override final
 Method returning a vector of the Track Parameters at layers/samplings. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

std::unique_ptr< Trk::CaloExtensioncaloExtension (const EventContext &ctx, const xAOD::TruthParticle &particle) const
 
std::unique_ptr< Trk::CaloExtensioncaloExtension (const EventContext &ctx, const xAOD::NeutralParticle &particle) const
 
std::unique_ptr< Trk::CaloExtensioncaloExtension (const EventContext &ctx, const xAOD::TrackParticle &particle) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

ToolHandle< Trk::IExtrapolatorm_extrapolator { this, "Extrapolator", "" }
 
ToolHandle< ICaloSurfaceBuilderm_calosurf
 Tool to build calorimeter layer surfaces. More...
 
Gaudi::Property< std::string > m_particleTypeName
 
Gaudi::Property< bool > m_startFromPerigee
 
const AtlasDetectorIDm_detID
 
ParticleHypothesis m_particleStrategy
 
Gaudi::Property< unsigned int > m_extrapolDetectorID
 
ToolHandle< GenericMonitoringToolm_monTool {this,"MonTool","","Monitoring tool"}
 Monitoring tool for recording histograms of the alg in action. More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 44 of file ParticleCaloExtensionTool.h.

Member Typedef Documentation

◆ Cache

typedef std::unordered_map<size_t, std::unique_ptr<Trk::CaloExtension> > Trk::IParticleCaloExtensionTool::Cache
inherited

Definition at line 98 of file IParticleCaloExtensionTool.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ ParticleCaloExtensionTool()

Trk::ParticleCaloExtensionTool::ParticleCaloExtensionTool ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 20 of file ParticleCaloExtensionTool.cxx.

23  : AthAlgTool(t, n, p)
24  , m_detID(nullptr)
26 {
27  declareInterface<IParticleCaloExtensionTool>(this);
28 }

◆ ~ParticleCaloExtensionTool()

Trk::ParticleCaloExtensionTool::~ParticleCaloExtensionTool ( )
virtualdefault

Member Function Documentation

◆ caloExtension() [1/7]

std::unique_ptr< Trk::CaloExtension > Trk::ParticleCaloExtensionTool::caloExtension ( const EventContext &  ctx,
const TrackParameters startPars,
PropDirection  propDir,
ParticleHypothesis  particleType 
) const
finaloverridevirtual

Method returning a unique_ptr to the caloExtension given the relevant starting point parameters , direction and particle hypothesis.

Parameters
ctxevent context needed for multithreading
startParsthe starting track parameters
propDirextrapolation direction
particleTypetype of particle

Implements Trk::IParticleCaloExtensionTool.

Definition at line 257 of file ParticleCaloExtensionTool.cxx.

261 {
262  ATH_MSG_DEBUG("looking up calo states: r "
263  << startPars.position().perp() << " z "
264  << startPars.position().z() << " momentum "
265  << startPars.momentum().mag());
266 
267  auto extrapolation_timer = Monitored::Timer<std::chrono::microseconds>( "TIME_extrapolation" );
268  auto group = Monitored::Group(m_monTool, extrapolation_timer);
269  // Start monitoring timer
270  extrapolation_timer.start();
271  /* The last argument to the extrapolate overload
272  * corresponds to a GeometrySignature value from
273  * TrkDetDescrUtils/GeometrySignature.h
274  * The extrapolation stop at the indicated subdetector exit
275  */
276  std::unique_ptr<
277  std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>>>
278  caloParameters = m_extrapolator->collectIntersections(
279  ctx, startPars, propDir, particleType, m_extrapolDetectorID);
280 
281  // Stop monitoring timer
282  extrapolation_timer.stop();
283 
284  if (!caloParameters) {
285  return nullptr;
286  }
287 
288  TrackParametersIdHelper parsIdHelper;
289 
290  // create final object
291  std::unique_ptr<TrackParameters> caloEntry = nullptr;
292  std::unique_ptr<TrackParameters> muonEntry = nullptr;
293  std::vector<CurvilinearParameters> caloLayers;
294  caloLayers.reserve(caloParameters->size() - 1);
295  ATH_MSG_DEBUG(" Found calo parameters: " << caloParameters->size()
296  << " extrapolation exit ID="
298 
299  for (auto& p : *caloParameters) {
300  if (!p.first) {
301  continue;
302  }
303  // assign parameters
304  // calo aentry muon entry and the crossed calo layers
305  if (p.second == 1 && propDir == Trk::alongMomentum) {
306  caloEntry = std::move(p.first);
307  } else if (p.second == 3 && propDir == Trk::oppositeMomentum) {
308  caloEntry = std::move(p.first);
309  } else if (p.second == 3 && propDir == Trk::alongMomentum) {
310  muonEntry = std::move(p.first);
311  } else if (p.second == 4 && propDir == Trk::oppositeMomentum) {
312  muonEntry = std::move(p.first);
313  } else {
314  bool isEntry = p.second > 0;
315  TrackParametersIdentifier id = parsIdHelper.encode(
317  static_cast<CaloSampling::CaloSample>(abs(p.second) % 1000),
318  isEntry);
319  /*
320  * We construct curvilinear parameters which we push
321  * back to the caloLayers.
322  * curvillinear.
323  */
324  if (p.first->type() != Trk::Curvilinear) {
325  caloLayers.emplace_back(p.first->position(),
326  p.first->momentum(),
327  p.first->charge(),
328  std::nullopt,
329  id);
330  } else {
331  std::optional<AmgSymMatrix(5)> covariance(std::nullopt);
332  if (p.first->covariance()) {
333  covariance = AmgSymMatrix(5)(*(p.first->covariance()));
334  }
335  caloLayers.emplace_back(p.first->position(),
336  p.first->momentum(),
337  p.first->charge(),
338  std::move(covariance),
339  id);
340  }
341  }
342  }
343 
344  if (!muonEntry && propDir == Trk::oppositeMomentum &&
345  std::abs(startPars.position().perp() - 4255.) < 1.) {
346  // muonEntry is right at the startPars position
347  muonEntry = startPars.uniqueClone();
348  }
349 
350  return std::make_unique<Trk::CaloExtension>(
351  std::move(caloEntry), std::move(muonEntry), std::move(caloLayers));
352 }

◆ caloExtension() [2/7]

std::unique_ptr< Trk::CaloExtension > Trk::ParticleCaloExtensionTool::caloExtension ( const EventContext &  ctx,
const xAOD::IParticle particle 
) const
finaloverridevirtual

Method returning the calo layers crossed by the IParticle track or the IParticle itself if it is neutral/TruthParticle The memory ownership is handled by the unique_ptr.

Parameters
ctxevent context needed for multithreading
particlereference to the Particle
Returns
unique_ptr to a CaloExtension

Implements Trk::IParticleCaloExtensionTool.

Definition at line 63 of file ParticleCaloExtensionTool.cxx.

65 {
66  if (particle.type() == xAOD::Type::TrackParticle) {
67  const xAOD::TrackParticle* trackParticle = static_cast<const xAOD::TrackParticle*>(&particle);
68  return caloExtension(ctx, *trackParticle);
69  }
70  if (particle.type() == xAOD::Type::TruthParticle) {
71  const xAOD::TruthParticle* truthParticle = static_cast<const xAOD::TruthParticle*>(&particle);
72  return caloExtension(ctx, *truthParticle);
73  } else if (particle.type() == xAOD::Type::Electron) {
74  const xAOD::Electron* el = static_cast<const xAOD::Electron*>(&particle);
75  if (el->trackParticle()) {
76  return caloExtension(ctx, *(el->trackParticle()));
77  }
78  } else if (particle.type() == xAOD::Type::Muon) {
79  const xAOD::Muon* muon = static_cast<const xAOD::Muon*>(&particle);
80  if (muon->primaryTrackParticle()) {
81  return caloExtension(ctx, *(muon->primaryTrackParticle()));
82  }
83  } else if (particle.type() == xAOD::Type::NeutralParticle) {
84  const xAOD::NeutralParticle* neutralParticle = static_cast<const xAOD::NeutralParticle*>(&particle);
85  return caloExtension(ctx, *neutralParticle);
86  }
87  ATH_MSG_WARNING("Unsupported IParticle type");
88  return nullptr;
89 }

◆ caloExtension() [3/7]

const Trk::CaloExtension * Trk::ParticleCaloExtensionTool::caloExtension ( const EventContext &  ctx,
const xAOD::IParticle particle,
IParticleCaloExtensionTool::Cache cache 
) const
finaloverridevirtual

Method to return the calo layers crossed (CaloExtension) by the IParticle track or the IParticle itself if it is neutral/TruthParticle.

An alg looping over a single collection of IParticles re-using them multiple times can use a local cache of the form std::unordered_map<size_t,std::unique_ptr<Trk::CaloExtension>>. The key is the value of IParticle::index()

This method adds the relevant extension to the cache look-up table which retains ownership.

Parameters
ctxevent context needed for multithreading
particlereference to the Particle
cachethe look-up table cache
Returns
ptr to a const CaloExtension (owned by the cache)

Implements Trk::IParticleCaloExtensionTool.

Definition at line 92 of file ParticleCaloExtensionTool.cxx.

96 {
97  /*if not there , default ctor for unique_ptr (nullptr)*/
98  std::unique_ptr<Trk::CaloExtension>& extension = cache[particle.index()];
99  if (extension == nullptr) {
100  extension = caloExtension(ctx, particle);
101  }
102  return extension.get();
103 }

◆ caloExtension() [4/7]

std::unique_ptr< Trk::CaloExtension > Trk::ParticleCaloExtensionTool::caloExtension ( const EventContext &  ctx,
const xAOD::NeutralParticle particle 
) const
private

Definition at line 173 of file ParticleCaloExtensionTool.cxx.

176 {
178  // create start parameters
179  const Trk::NeutralPerigee& perigee = particle.perigeeParameters();
180  double charge = 1.;
181  const Amg::Vector3D& pos(perigee.position());
182  Amg::Vector3D mom(perigee.momentum());
183  // Aproximate neutral particles as charged with infinite momentum
184  mom.normalize();
185  mom *= 1e10;
187  // get extension
188  return caloExtension(ctx, startPars, alongMomentum, particleType);
189 }

◆ caloExtension() [5/7]

std::unique_ptr< Trk::CaloExtension > Trk::ParticleCaloExtensionTool::caloExtension ( const EventContext &  ctx,
const xAOD::TrackParticle particle 
) const
private

Definition at line 192 of file ParticleCaloExtensionTool.cxx.

195 {
196  // Start with what the user opted as strategy
198 
199  // wee extrapolate either from the perigee or
200  // from the last measurement.
201  if (m_startFromPerigee || !particle.track()) {
202  bool idExit = true;
203  // Muon Entry is around z 6783 and r 4255
204  if (std::abs(particle.perigeeParameters().position().z()) > 6700.)
205  idExit = false;
206  if (particle.perigeeParameters().position().perp() > 4200.)
207  idExit = false;
208  PropDirection propDir = idExit ? alongMomentum : oppositeMomentum;
209  return caloExtension(
210  ctx, particle.perigeeParameters(), propDir, particleType);
211  }
212 
213  // Extrapolation from last track parameters
214  const Track& track = *particle.track();
215  // Look-up the parameters closest to the calorimeter in
216  // ID and muon system
217  ATH_MSG_DEBUG("trying to add calo layers");
218  const TrackParameters* idExitParamers = nullptr;
219  const TrackParameters* muonEntryParamers = nullptr;
221  track.trackStateOnSurfaces()->begin();
222  for (; itTSoS != track.trackStateOnSurfaces()->end(); ++itTSoS) {
223  // select state with track parameters on a measurement
224  if (!(**itTSoS).trackParameters() ||
225  !(**itTSoS).type(TrackStateOnSurface::Measurement) ||
226  (**itTSoS).type(TrackStateOnSurface::Outlier)) {
227  continue;
228  }
229 
230  const Identifier& id = (**itTSoS)
231  .trackParameters()
232  ->associatedSurface()
233  .associatedDetectorElementIdentifier();
234  if (m_detID->is_indet(id))
235  idExitParamers = (**itTSoS).trackParameters();
236  if (m_detID->is_muon(id) && !muonEntryParamers)
237  muonEntryParamers = (**itTSoS).trackParameters();
238  }
239  // require at least one of them
240  if (!idExitParamers && !muonEntryParamers) {
241  idExitParamers = track.perigeeParameters();
242  }
243  // pick start parameters, start in ID if possible
244  const TrackParameters* startPars =
245  idExitParamers ? idExitParamers : muonEntryParamers;
246 
247  if (!startPars) {
248  ATH_MSG_WARNING("Failed to find start parameters");
249  return nullptr;
250  }
251  PropDirection propDir = idExitParamers ? alongMomentum : oppositeMomentum;
252 
253  return caloExtension(ctx, *startPars, propDir, particleType);
254 }

◆ caloExtension() [6/7]

std::unique_ptr< Trk::CaloExtension > Trk::ParticleCaloExtensionTool::caloExtension ( const EventContext &  ctx,
const xAOD::TruthParticle particle 
) const
private

Definition at line 148 of file ParticleCaloExtensionTool.cxx.

151 {
153  // get start parameters
154  const xAOD::TruthVertex* pvtx = particle.prodVtx();
155  if (pvtx == nullptr) {
156  return nullptr;
157  }
158  double charge = particle.charge();
159  Amg::Vector3D pos(pvtx->x(), pvtx->y(), pvtx->z());
160  Amg::Vector3D mom(particle.px(), particle.py(), particle.pz());
161  // Aproximate neutral particles as charged with infinite momentum
162  if (particle.isNeutral()) {
163  charge = 1.;
164  mom.normalize();
165  mom *= 1e10;
166  }
168  // get extension
169  return caloExtension(ctx, startPars, alongMomentum, particleType);
170 }

◆ caloExtension() [7/7]

const Trk::CaloExtension * Trk::ParticleCaloExtensionTool::caloExtension ( const xAOD::IParticle particle,
const CaloExtensionCollection cache 
) const
finaloverridevirtual

Method to return the calo layers crossed (CaloExtension) by the IParticle track or the IParticle itself if it is neutral/TruthParticle It returns the result stored in the CaloExtensionCollection created by the caloExtensionCollection method below.

In this case, the CaloExtensionCollection (DataVector<CaloExtension>) owns the caloExtension.

Parameters
particlereference to the Particle
cacheThe CaloExtensionCollections
Returns
ptr to a const CaloExtension (owned by the cache)

Implements Trk::IParticleCaloExtensionTool.

Definition at line 106 of file ParticleCaloExtensionTool.cxx.

109 {
110  size_t index = particle.index();
111  if (index < cache.size()) {
112  return cache[index];
113  }
114  ATH_MSG_WARNING("cache size smaller than particle index");
115  return nullptr;
116 }

◆ caloExtensionCollection()

StatusCode Trk::ParticleCaloExtensionTool::caloExtensionCollection ( const EventContext &  ctx,
const xAOD::IParticleContainer particles,
const std::vector< bool > &  mask,
CaloExtensionCollection caloextensions 
) const
finaloverridevirtual

Method that can be used by algorithms that : A.

Have an IParticleCollection B. Define a mask of the size of that collection C. Want back a Calo Extension Collection alligned with the input collection i.e 1 to 1 correspondance with the input collection. The Collection can then be used as such to retrieve the extensions or manipulated and written to StoreGate.

Parameters
ctxevent context needed for multithreading
particlesThe input collection
maskcontains true for the elements for which to permorm an extension, false otherwise
Returns
caloextension Output to be filled, will contain unfilled CaloExtension where the mask was false, otherwise it contains the relevant result.

Implements Trk::IParticleCaloExtensionTool.

Definition at line 119 of file ParticleCaloExtensionTool.cxx.

124 {
125  const size_t numparticles = particles.size();
126 
127  if (mask.size() != numparticles) {
128  ATH_MSG_ERROR("mask does not have the same size as in input collection");
129  return StatusCode::FAILURE;
130  }
131  caloextensions.reserve(numparticles);
132  /* Either create a proper CaloExtension or otherwise a dummy one
133  * i.e one with no intersections
134  */
135  for (size_t i = 0; i < numparticles; ++i) {
136  if (mask[i]) {
137  std::unique_ptr<Trk::CaloExtension> extension =
138  caloExtension(ctx, *(particles[i]));
139  caloextensions.push_back(std::move(extension));
140  } else {
141  caloextensions.push_back(nullptr);
142  }
143  }
144  return StatusCode::SUCCESS;
145 }

◆ caloSurfacesFromLayers()

std::vector< std::unique_ptr< Trk::Surface > > Trk::ParticleCaloExtensionTool::caloSurfacesFromLayers ( const std::vector< CaloSampling::CaloSample > &  clusterLayers,
double  eta,
const CaloDetDescrManager caloDD 
) const
finaloverridevirtual

Method returning a vector of calo surfaces give calo layers/samplings.

Parameters
ctxevent context needed for multithreading
clusterLayersthe layers (should be ordered) we aim to
etaeta used for the depth

Implements Trk::IParticleCaloExtensionTool.

Definition at line 355 of file ParticleCaloExtensionTool.cxx.

359 {
360  // Create surfaces at the layers
361  std::vector<std::unique_ptr<Trk::Surface>> caloSurfaces;
362  caloSurfaces.reserve(clusterLayers.size());
363  for (CaloSampling::CaloSample lay : clusterLayers) {
364  auto* surf = m_calosurf->CreateUserSurface(lay, 0., eta, &caloDD);
365  if (surf) {
366  caloSurfaces.emplace_back(surf);
367  }
368  }
369 
370  return caloSurfaces;
371 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ initialize()

StatusCode Trk::ParticleCaloExtensionTool::initialize ( )
finaloverridevirtual

Definition at line 33 of file ParticleCaloExtensionTool.cxx.

34 {
35  /* Retrieve track extrapolator from ToolService */
36  ATH_CHECK(m_extrapolator.retrieve());
37  // Retrieve the calo surface builder
38  /* Retrieve the Atlas detector ID */
39  ATH_CHECK(detStore()->retrieve(m_detID, "AtlasID"));
40  /* convert string to proper particle type enum*/
41  if (m_particleTypeName == "nonInteracting") {
43  } else if (m_particleTypeName == "muon") {
45  } else if (m_particleTypeName == "pion") {
47  } else {
48  ATH_MSG_WARNING("Unsupported particle type, using strategy based on type "
50  }
51  if (!m_calosurf.empty()) {
52  ATH_CHECK(m_calosurf.retrieve());
53  } else {
54  m_calosurf.disable();
55  }
56  if (!m_monTool.empty()) {
57  ATH_CHECK(m_monTool.retrieve());
58  }
59  return StatusCode::SUCCESS;
60 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

const InterfaceID & Trk::IParticleCaloExtensionTool::interfaceID ( )
inlinestaticinherited

Definition at line 247 of file IParticleCaloExtensionTool.h.

248 {
249  return IID_IParticleCaloExtensionTool;
250 }

◆ layersCaloExtension()

std::vector< std::pair< CaloSampling::CaloSample, std::unique_ptr< const Trk::TrackParameters > > > Trk::ParticleCaloExtensionTool::layersCaloExtension ( const EventContext &  ctx,
const TrackParameters startPars,
const std::vector< CaloSampling::CaloSample > &  clusterLayers,
double  eta,
const CaloDetDescrManager caloDD,
ParticleHypothesis  particleType 
) const
finaloverridevirtual

Method returning a vector of the Track Parameters at layers/samplings.

Parameters
ctxevent context needed for multithreading
startParsthe starting track parameters
clusterLayersthe layers (should be ordered) we aim to
etaeta used for the depth
particleTypetype of particle

Implements Trk::IParticleCaloExtensionTool.

Definition at line 407 of file ParticleCaloExtensionTool.cxx.

414 {
415 
416  // Create surfaces at the layers
417  std::vector<std::unique_ptr<Trk::Surface>> caloSurfaces =
418  caloSurfacesFromLayers(clusterLayers, eta, caloDD);
419 
420  return surfaceCaloExtension(
421  ctx, startPars, clusterLayers, caloSurfaces, particleType);
422 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ surfaceCaloExtension()

std::vector< std::pair< CaloSampling::CaloSample, std::unique_ptr< const Trk::TrackParameters > > > Trk::ParticleCaloExtensionTool::surfaceCaloExtension ( const EventContext &  ctx,
const TrackParameters startPars,
const std::vector< CaloSampling::CaloSample > &  clusterLayers,
const std::vector< std::unique_ptr< Trk::Surface >> &  caloSurfaces,
ParticleHypothesis  particleType 
) const
finaloverridevirtual

Method returning a vector of the Track Parameters at layers/samplings.

Parameters
ctxevent context needed for multithreading
startParsthe starting track parameters
clusterLayersthe layers (should be ordered) we aim to
clusterSurfacesthe surfaces for each layer
particleTypetype of particle

The clusterLayers and clusterSurfaces need to be 1-1 this can be done via the caloSurfacesFromLayers method above.

Implements Trk::IParticleCaloExtensionTool.

Definition at line 375 of file ParticleCaloExtensionTool.cxx.

381 {
382  const auto* lastImpact = &startPars;
383  // Go into steps from layer to layer
384  size_t numSteps = caloSurfaces.size();
385  std::vector<std::pair<CaloSampling::CaloSample,
386  std::unique_ptr<const Trk::TrackParameters>>>
387  caloParameters{};
388  caloParameters.reserve(numSteps);
389  for (size_t i = 0; i < numSteps; ++i) {
390  std::unique_ptr<const Trk::TrackParameters> nextImpact =
391  m_extrapolator->extrapolateDirectly(ctx,
392  *lastImpact,
393  *(caloSurfaces[i]),
395  false,
396  particleType);
397  if (nextImpact) {
398  caloParameters.emplace_back(clusterLayers[i], std::move(nextImpact));
399  lastImpact = caloParameters.back().second.get();
400  }
401  }
402  return caloParameters;
403 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_calosurf

ToolHandle<ICaloSurfaceBuilder> Trk::ParticleCaloExtensionTool::m_calosurf
private
Initial value:
{
this,
"CaloSurfaceBuilder",
"",
"Tool to build calorimeter layer surfaces"
}

Tool to build calorimeter layer surfaces.

Definition at line 127 of file ParticleCaloExtensionTool.h.

◆ m_detID

const AtlasDetectorID* Trk::ParticleCaloExtensionTool::m_detID
private

Definition at line 144 of file ParticleCaloExtensionTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extrapolator

ToolHandle<Trk::IExtrapolator> Trk::ParticleCaloExtensionTool::m_extrapolator { this, "Extrapolator", "" }
private

Definition at line 124 of file ParticleCaloExtensionTool.h.

◆ m_extrapolDetectorID

Gaudi::Property<unsigned int> Trk::ParticleCaloExtensionTool::m_extrapolDetectorID
private
Initial value:
{
this,
"ExtrapolationDetectorID",
"The detector this tool should extrapolate through. Expects a "
"Trk::GeometrySignature enum value."
}

Definition at line 147 of file ParticleCaloExtensionTool.h.

◆ m_monTool

ToolHandle<GenericMonitoringTool> Trk::ParticleCaloExtensionTool::m_monTool {this,"MonTool","","Monitoring tool"}
private

Monitoring tool for recording histograms of the alg in action.

Definition at line 156 of file ParticleCaloExtensionTool.h.

◆ m_particleStrategy

ParticleHypothesis Trk::ParticleCaloExtensionTool::m_particleStrategy
private

Definition at line 145 of file ParticleCaloExtensionTool.h.

◆ m_particleTypeName

Gaudi::Property<std::string> Trk::ParticleCaloExtensionTool::m_particleTypeName
private
Initial value:
{
this, "ParticleType", "muon",
"The particle type used during extrapolation when not passed via the "
"method interfaces"
": muon, pion, nonInteracting"}

Definition at line 134 of file ParticleCaloExtensionTool.h.

◆ m_startFromPerigee

Gaudi::Property<bool> Trk::ParticleCaloExtensionTool::m_startFromPerigee
private
Initial value:
{ this,
"StartFromPerigee",
false,
"Start from Perigee" }

Definition at line 140 of file ParticleCaloExtensionTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
xAOD::Electron
Electron_v1 Electron
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Electron.h:17
Trk::ParticleCaloExtensionTool::caloExtension
virtual std::unique_ptr< Trk::CaloExtension > caloExtension(const EventContext &ctx, const xAOD::IParticle &particle) const override final
Method returning the calo layers crossed by the IParticle track or the IParticle itself if it is neut...
Definition: ParticleCaloExtensionTool.cxx:63
Trk::oppositeMomentum
@ oppositeMomentum
Definition: PropDirection.h:21
index
Definition: index.py:1
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
Trk::ParticleCaloExtensionTool::m_particleStrategy
ParticleHypothesis m_particleStrategy
Definition: ParticleCaloExtensionTool.h:145
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
Trk::ParticleCaloExtensionTool::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
Definition: ParticleCaloExtensionTool.h:124
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
Trk::Curvilinear
@ Curvilinear
Definition: ParametersCommon.h:29
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Trk::Calo
@ Calo
Definition: GeometrySignature.h:28
particleType
Definition: particleType.h:29
xAOD::TruthVertex_v1::y
float y() const
Vertex y displacement.
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
python.utils.AtlRunQueryLookup.mask
string mask
Definition: AtlRunQueryLookup.py:460
Trk::ParticleCaloExtensionTool::m_extrapolDetectorID
Gaudi::Property< unsigned int > m_extrapolDetectorID
Definition: ParticleCaloExtensionTool.h:147
Trk::ParticleCaloExtensionTool::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Monitoring tool for recording histograms of the alg in action.
Definition: ParticleCaloExtensionTool.h:156
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
Trk::TrackStateOnSurface::Outlier
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
Definition: TrackStateOnSurface.h:122
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
xAOD::TrackParticle
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParticle.h:13
Trk::AmgSymMatrix
AmgSymMatrix(5) &GXFTrackState
Definition: GXFTrackState.h:156
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Trk::ParticleCaloExtensionTool::m_detID
const AtlasDetectorID * m_detID
Definition: ParticleCaloExtensionTool.h:144
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::ParticleCaloExtensionTool::m_calosurf
ToolHandle< ICaloSurfaceBuilder > m_calosurf
Tool to build calorimeter layer surfaces.
Definition: ParticleCaloExtensionTool.h:127
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:85
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
AtlasDetDescr::fFirstAtlasCaloTechnology
@ fFirstAtlasCaloTechnology
Definition: AtlasDetTechnology.h:40
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
xAOD::TruthParticle
TruthParticle_v1 TruthParticle
Typedef to implementation.
Definition: Event/xAOD/xAODTruth/xAODTruth/TruthParticle.h:15
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
Trk::CurvilinearParametersT
Definition: CurvilinearParametersT.h:48
xAOD::NeutralParticle
NeutralParticle_v1 NeutralParticle
Reference the current persistent version:
Definition: NeutralParticle.h:13
Trk::muon
@ muon
Definition: ParticleHypothesis.h:28
TrackParametersIdentifier
unsigned int TrackParametersIdentifier
Definition: TrackParametersIdHelper.h:13
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Trk::ParticleCaloExtensionTool::m_startFromPerigee
Gaudi::Property< bool > m_startFromPerigee
Definition: ParticleCaloExtensionTool.h:140
xAOD::TruthVertex_v1
Class describing a truth vertex in the MC record.
Definition: TruthVertex_v1.h:37
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:239
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
Trk::nonInteracting
@ nonInteracting
Definition: ParticleHypothesis.h:25
Trk::TrackParameters
ParametersBase< TrackParametersDim, Charged > TrackParameters
Definition: Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:27
AtlasDetectorID::is_indet
bool is_indet(Identifier id) const
Definition: AtlasDetectorID.h:683
charge
double charge(const T &p)
Definition: AtlasPID.h:931
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
xAOD::Electron_v1
Definition: Electron_v1.h:34
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Muon
struct TBPatternUnitContext Muon
xAOD::TruthVertex_v1::x
float x() const
Vertex x displacement.
Trk::ParticleCaloExtensionTool::caloSurfacesFromLayers
std::vector< std::unique_ptr< Trk::Surface > > caloSurfacesFromLayers(const std::vector< CaloSampling::CaloSample > &clusterLayers, double eta, const CaloDetDescrManager &caloDD) const override final
Method returning a vector of calo surfaces give calo layers/samplings.
Definition: ParticleCaloExtensionTool.cxx:355
DeMoScan.index
string index
Definition: DeMoScan.py:364
a
TList * a
Definition: liststreamerinfos.cxx:10
CaloLCW_tf.group
group
Definition: CaloLCW_tf.py:28
h
AtlasDetectorID::is_muon
bool is_muon(Identifier id) const
Definition: AtlasDetectorID.h:701
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::TruthVertex_v1::z
float z() const
Vertex longitudinal distance along the beam line form the origin.
Trk::ParticleCaloExtensionTool::surfaceCaloExtension
virtual std::vector< std::pair< CaloSampling::CaloSample, std::unique_ptr< const Trk::TrackParameters > > > surfaceCaloExtension(const EventContext &ctx, const TrackParameters &startPars, const std::vector< CaloSampling::CaloSample > &clusterLayers, const std::vector< std::unique_ptr< Trk::Surface >> &caloSurfaces, ParticleHypothesis particleType) const override final
Method returning a vector of the Track Parameters at layers/samplings.
Definition: ParticleCaloExtensionTool.cxx:375
LArG4FSStartPointFilter.particles
list particles
Definition: LArG4FSStartPointFilter.py:84
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
Trk::ParticleCaloExtensionTool::m_particleTypeName
Gaudi::Property< std::string > m_particleTypeName
Definition: ParticleCaloExtensionTool.h:134
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
xAOD::NeutralParticle_v1
Class describing a NeutralParticle.
Definition: NeutralParticle_v1.h:40
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Monitored::Timer
A monitored timer.
Definition: MonitoredTimer.h:32
Trk::TrackStateOnSurface::Measurement
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
Definition: TrackStateOnSurface.h:101
fitman.k
k
Definition: fitman.py:528
Identifier
Definition: IdentifierFieldParser.cxx:14