ATLAS Offline Software
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 StatusCode finalize () 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 277 of file ParticleCaloExtensionTool.cxx.

281 {
282  ATH_MSG_DEBUG("looking up calo states: r "
283  << startPars.position().perp() << " z "
284  << startPars.position().z() << " momentum "
285  << startPars.momentum().mag());
286 
287  // pointers to hold results and go
288  std::vector<const TrackStateOnSurface*>* material = nullptr;
289 
290  auto extrapolation_timer = Monitored::Timer<std::chrono::microseconds>( "TIME_extrapolation" );
291  auto group = Monitored::Group(m_monTool, extrapolation_timer);
292  // Start monitoring timer
293  extrapolation_timer.start();
294 
295  /* The last argument to the extrapolate overload
296  * corresponds to a GeometrySignature value from
297  * TrkDetDescrUtils/GeometrySignature.h
298  * The extrapolation stop at the indicated subdetector exit
299  */
300  std::unique_ptr<std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>>>
301  caloParameters = m_extrapolator->collectIntersections(
302  ctx, startPars, propDir, particleType, material, m_extrapolDetectorID);
303 
304  // Stop monitoring timer
305  extrapolation_timer.stop();
306 
307  if (material) {
308  ATH_MSG_DEBUG("Got material " << material->size());
309  for (auto& m : *material) {
311  " layer "
312  << " param " << m->trackParameters() << " pos: r "
313  << (m->trackParameters() ? m->trackParameters()->position().perp()
314  : -999)
315  << " z "
316  << (m->trackParameters() ? m->trackParameters()->position().z() : -999)
317  << " pt "
318  << (m->trackParameters() ? m->trackParameters()->momentum().perp()
319  : -999)
320  << " mat "
321  << (m->materialEffectsOnTrack()
322  ? m->materialEffectsOnTrack()->thicknessInX0()
323  : -999));
324  delete m;
325  }
326  delete material;
327  }
328  if (!caloParameters) {
329  return nullptr;
330  }
331  TrackParametersIdHelper parsIdHelper;
332 
333  // create final object
334  const TrackParameters* caloEntry = nullptr;
335  const TrackParameters* muonEntry = nullptr;
336  std::vector<CurvilinearParameters> caloLayers;
337  caloLayers.reserve(caloParameters->size() - 1);
338  ATH_MSG_DEBUG(" Found calo parameters: " << caloParameters->size()
339  << " extrapolation exit ID="
341 
342  for (auto& p : *caloParameters) {
343  if (!p.first) {
344  continue;
345  }
346  // assign parameters
347  // calo aentry muon entry and the crossed calo layers
348  if (p.second == 1 && propDir == Trk::alongMomentum) {
349  caloEntry = p.first.release();
350  } else if (p.second == 3 && propDir == Trk::oppositeMomentum) {
351  caloEntry = p.first.release();
352  } else if (p.second == 3 && propDir == Trk::alongMomentum) {
353  muonEntry = p.first.release();
354  } else if (p.second == 4 && propDir == Trk::oppositeMomentum) {
355  muonEntry = p.first.release();
356  } else {
357  bool isEntry = p.second > 0;
358  TrackParametersIdentifier id = parsIdHelper.encode(
360  static_cast<CaloSampling::CaloSample>(abs(p.second) % 1000),
361  isEntry);
362  /*
363  * We construct curvilinear parameters which we push
364  * back to the caloLayers.
365  * We need to check if the parameters are already
366  * curvillinear.
367  * And if they are we need to clone the
368  * covariance matrix
369  */
370  if (p.first->type() != Trk::Curvilinear) {
371  caloLayers.emplace_back(p.first->position(),
372  p.first->momentum(),
373  p.first->charge(),
374  std::nullopt,
375  id);
376  } else {
377  std::optional<AmgSymMatrix(5)> covariance(std::nullopt);
378  if (p.first->covariance()) {
379  covariance = AmgSymMatrix(5)(*(p.first->covariance()));
380  }
381  caloLayers.emplace_back(p.first->position(),
382  p.first->momentum(),
383  p.first->charge(),
384  std::move(covariance),
385  id);
386  }
387  }
388  }
389 
390  if (!muonEntry && propDir == Trk::oppositeMomentum &&
391  std::abs(startPars.position().perp() - 4255.) < 1.) {
392  // muonEntry is right at the startPars position
393  muonEntry = startPars.clone();
394  }
395 
396  return std::make_unique<Trk::CaloExtension>(
397  caloEntry, muonEntry, std::move(caloLayers));
398 }

◆ 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 69 of file ParticleCaloExtensionTool.cxx.

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

◆ 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 101 of file ParticleCaloExtensionTool.cxx.

105 {
106  /*if not there , default ctor for unique_ptr (nullptr)*/
107  std::unique_ptr<Trk::CaloExtension>& extension = cache[particle.index()];
108  if (extension == nullptr) {
109  extension = caloExtension(ctx, particle);
110  }
111  return extension.get();
112 }

◆ caloExtension() [4/7]

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

Definition at line 187 of file ParticleCaloExtensionTool.cxx.

190 {
191  // create start parameters
192  const Trk::NeutralPerigee& perigee = particle.perigeeParameters();
193  double charge = 1.;
194  const Amg::Vector3D& pos(perigee.position());
195  Amg::Vector3D mom(perigee.momentum());
196  // Aproximate neutral particles as charged with infinite momentum
197  mom.normalize();
198  mom *= 1e10;
200  // get extension
201  return caloExtension(ctx, startPars, alongMomentum, muon);
202 }

◆ caloExtension() [5/7]

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

Definition at line 205 of file ParticleCaloExtensionTool.cxx.

208 {
209  /*
210  * The following are tuned mainly for
211  * the strategy we want to follow for muons.
212  * But should also work well as a generic
213  * strategy.
214  */
215 
216  // Start with what the user opted as strategy
218 
219  // wee extrapolate either from the perigee or
220  // from the last measurement.
221  if (m_startFromPerigee || !particle.track()) {
222  bool idExit = true;
223  // Muon Entry is around z 6783 and r 4255
224  if (std::abs(particle.perigeeParameters().position().z()) > 6700.)
225  idExit = false;
226  if (particle.perigeeParameters().position().perp() > 4200.)
227  idExit = false;
228  PropDirection propDir = idExit ? alongMomentum : oppositeMomentum;
229  return caloExtension(
230  ctx, particle.perigeeParameters(), propDir, particleType);
231  }
232 
233  // Extrapolation from last track parameters
234  const Track& track = *particle.track();
235  // Look-up the parameters closest to the calorimeter in
236  // ID and muon system
237  ATH_MSG_DEBUG("trying to add calo layers");
238  const TrackParameters* idExitParamers = nullptr;
239  const TrackParameters* muonEntryParamers = nullptr;
241  track.trackStateOnSurfaces()->begin();
242  for (; itTSoS != track.trackStateOnSurfaces()->end(); ++itTSoS) {
243  // select state with track parameters on a measurement
244  if (!(**itTSoS).trackParameters() ||
245  !(**itTSoS).type(TrackStateOnSurface::Measurement) ||
246  (**itTSoS).type(TrackStateOnSurface::Outlier)) {
247  continue;
248  }
249 
250  const Identifier& id = (**itTSoS)
251  .trackParameters()
252  ->associatedSurface()
253  .associatedDetectorElementIdentifier();
254  if (m_detID->is_indet(id))
255  idExitParamers = (**itTSoS).trackParameters();
256  if (m_detID->is_muon(id) && !muonEntryParamers)
257  muonEntryParamers = (**itTSoS).trackParameters();
258  }
259  // require at least one of them
260  if (!idExitParamers && !muonEntryParamers) {
261  idExitParamers = track.perigeeParameters();
262  }
263  // pick start parameters, start in ID if possible
264  const TrackParameters* startPars =
265  idExitParamers ? idExitParamers : muonEntryParamers;
266 
267  if (!startPars) {
268  ATH_MSG_WARNING("Failed to find start parameters");
269  return nullptr;
270  }
271  PropDirection propDir = idExitParamers ? alongMomentum : oppositeMomentum;
272 
273  return caloExtension(ctx, *startPars, propDir, particleType);
274 }

◆ caloExtension() [6/7]

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

Definition at line 157 of file ParticleCaloExtensionTool.cxx.

160 {
162  if (abs(particle.pdgId()) == 11) {
163  particleType = muon;
164  } else if (abs(particle.pdgId()) == 13) {
165  particleType = muon;
166  }
167  // get start parameters
168  const xAOD::TruthVertex* pvtx = particle.prodVtx();
169  if (pvtx == nullptr) {
170  return nullptr;
171  }
172  double charge = particle.charge();
173  Amg::Vector3D pos(pvtx->x(), pvtx->y(), pvtx->z());
174  Amg::Vector3D mom(particle.px(), particle.py(), particle.pz());
175  // Aproximate neutral particles as charged with infinite momentum
176  if (particle.isNeutral()) {
177  charge = 1.;
178  mom.normalize();
179  mom *= 1e10;
180  }
182  // get extension
183  return caloExtension(ctx, startPars, alongMomentum, particleType);
184 }

◆ 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 115 of file ParticleCaloExtensionTool.cxx.

118 {
119  size_t index = particle.index();
120  if (index < cache.size()) {
121  return cache[index];
122  }
123  ATH_MSG_WARNING("cache size smaller than particle index");
124  return nullptr;
125 }

◆ 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 128 of file ParticleCaloExtensionTool.cxx.

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

◆ 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 401 of file ParticleCaloExtensionTool.cxx.

405 {
406  // Create surfaces at the layers
407  std::vector<std::unique_ptr<Trk::Surface>> caloSurfaces;
408  caloSurfaces.reserve(clusterLayers.size());
409  for (CaloSampling::CaloSample lay : clusterLayers) {
410  auto* surf = m_calosurf->CreateUserSurface(lay, 0., eta, &caloDD);
411  if (surf) {
412  caloSurfaces.emplace_back(surf);
413  }
414  }
415 
416  return caloSurfaces;
417 }

◆ 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

◆ finalize()

StatusCode Trk::ParticleCaloExtensionTool::finalize ( )
finaloverridevirtual

Definition at line 63 of file ParticleCaloExtensionTool.cxx.

64 {
65  return StatusCode::SUCCESS;
66 }

◆ 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 453 of file ParticleCaloExtensionTool.cxx.

460 {
461 
462  // Create surfaces at the layers
463  std::vector<std::unique_ptr<Trk::Surface>> caloSurfaces =
464  caloSurfacesFromLayers(clusterLayers, eta, caloDD);
465 
466  return surfaceCaloExtension(
467  ctx, startPars, clusterLayers, caloSurfaces, particleType);
468 }

◆ 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 421 of file ParticleCaloExtensionTool.cxx.

427 {
428  const auto* lastImpact = &startPars;
429  // Go into steps from layer to layer
430  size_t numSteps = caloSurfaces.size();
431  std::vector<std::pair<CaloSampling::CaloSample,
432  std::unique_ptr<const Trk::TrackParameters>>>
433  caloParameters{};
434  caloParameters.reserve(numSteps);
435  for (size_t i = 0; i < numSteps; ++i) {
436  std::unique_ptr<const Trk::TrackParameters> nextImpact =
437  m_extrapolator->extrapolateDirectly(ctx,
438  *lastImpact,
439  *(caloSurfaces[i]),
441  false,
442  particleType);
443  if (nextImpact) {
444  caloParameters.emplace_back(clusterLayers[i], std::move(nextImpact));
445  lastImpact = caloParameters.back().second.get();
446  }
447  }
448  return caloParameters;
449 }

◆ 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 129 of file ParticleCaloExtensionTool.h.

◆ m_detID

const AtlasDetectorID* Trk::ParticleCaloExtensionTool::m_detID
private

Definition at line 146 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 126 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 149 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 158 of file ParticleCaloExtensionTool.h.

◆ m_particleStrategy

ParticleHypothesis Trk::ParticleCaloExtensionTool::m_particleStrategy
private

Definition at line 147 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 136 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 142 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
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
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:69
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
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:147
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:126
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::TrackParameters
ParametersBase< 5, Charged > TrackParameters
Definition: Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:24
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:149
Trk::ParticleCaloExtensionTool::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Monitoring tool for recording histograms of the alg in action.
Definition: ParticleCaloExtensionTool.h:158
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
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:146
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::ParticleCaloExtensionTool::m_calosurf
ToolHandle< ICaloSurfaceBuilder > m_calosurf
Tool to build calorimeter layer surfaces.
Definition: ParticleCaloExtensionTool.h:129
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:92
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
AtlasDetDescr::fFirstAtlasCaloTechnology
@ fFirstAtlasCaloTechnology
Definition: AtlasDetTechnology.h:40
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
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:41
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:142
xAOD::TruthVertex_v1
Class describing a truth vertex in the MC record.
Definition: TruthVertex_v1.h:41
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:191
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Trk::nonInteracting
@ nonInteracting
Definition: ParticleHypothesis.h:25
AtlasDetectorID::is_indet
bool is_indet(Identifier id) const
Definition: AtlasDetectorID.h:683
charge
double charge(const T &p)
Definition: AtlasPID.h:494
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:401
DeMoScan.index
string index
Definition: DeMoScan.py:362
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:421
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:616
Trk::ParticleCaloExtensionTool::m_particleTypeName
Gaudi::Property< std::string > m_particleTypeName
Definition: ParticleCaloExtensionTool.h:136
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
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