ATLAS Offline Software
IMaterialAllocator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // IMaterialAllocator
7 // tool interface to allocate tracking geometry material onto indet and/or
8 // muon spectrometer tracks
9 //
11 
12 #ifndef TRKIPATFITTERUTILS_IMATERIALALLOCATOR_H
13 #define TRKIPATFITTERUTILS_IMATERIALALLOCATOR_H
14 
15 #include <vector>
16 
17 #include "GaudiKernel/IAlgTool.h"
20 
21 namespace Trk {
22 
24 static const InterfaceID IID_IMaterialAllocator("IMaterialAllocator", 1, 0);
25 
34 class FitMeasurement;
35 class FitParameters;
36 class TrackStateOnSurface;
37 
38 class IMaterialAllocator : virtual public IAlgTool {
39  public:
40  typedef std::vector<std::unique_ptr<const TrackStateOnSurface> > Garbage_t;
41 
43  virtual ~IMaterialAllocator() {}
44 
46  static const InterfaceID& interfaceID() { return IID_IMaterialAllocator; }
47 
50  virtual void addLeadingMaterial(std::vector<FitMeasurement*>& measurements,
51  ParticleHypothesis particleHypothesis,
52  FitParameters& fitParameters,
53  Garbage_t& garbage) const = 0;
54 
56  virtual void allocateMaterial(std::vector<FitMeasurement*>& measurements,
57  ParticleHypothesis particleHypothesis,
58  FitParameters& fitParameters,
59  const TrackParameters& startParameters,
60  Garbage_t& garbage) const = 0;
61 
64  virtual void initializeScattering(
65  std::vector<FitMeasurement*>& measurements) const = 0;
66 
70  virtual std::vector<const TrackStateOnSurface*>* leadingSpectrometerTSOS(
71  const TrackParameters& spectrometerParameters,
72  Garbage_t& garbage) const = 0;
73 
75  virtual void orderMeasurements(std::vector<FitMeasurement*>& measurements,
76  Amg::Vector3D startDirection,
77  Amg::Vector3D startPosition) const = 0;
78 
80  virtual bool reallocateMaterial(std::vector<FitMeasurement*>& measurements,
81  FitParameters& fitParameters,
82  Garbage_t& garbage) const = 0;
83 };
84 
85 } // namespace Trk
86 
87 #endif // TRKIPATFITTERUTILS_IMATERIALALLOCATOR_H
Trk::IMaterialAllocator::reallocateMaterial
virtual bool reallocateMaterial(std::vector< FitMeasurement * > &measurements, FitParameters &fitParameters, Garbage_t &garbage) const =0
IMaterialAllocator interface: has material been reallocated?
TrackParameters.h
Trk::IMaterialAllocator::allocateMaterial
virtual void allocateMaterial(std::vector< FitMeasurement * > &measurements, ParticleHypothesis particleHypothesis, FitParameters &fitParameters, const TrackParameters &startParameters, Garbage_t &garbage) const =0
IMaterialAllocator interface: allocate material.
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Trk::IMaterialAllocator::~IMaterialAllocator
virtual ~IMaterialAllocator()
Virtual destructor.
Definition: IMaterialAllocator.h:43
Trk::IMaterialAllocator::orderMeasurements
virtual void orderMeasurements(std::vector< FitMeasurement * > &measurements, Amg::Vector3D startDirection, Amg::Vector3D startPosition) const =0
IMaterialAllocator interface: clear temporary TSOS.
Trk::IMaterialAllocator::Garbage_t
std::vector< std::unique_ptr< const TrackStateOnSurface > > Garbage_t
Definition: IMaterialAllocator.h:40
Trk::ParametersBase
Definition: ParametersBase.h:55
ParticleHypothesis.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::IMaterialAllocator::interfaceID
static const InterfaceID & interfaceID()
AlgTool and IAlgTool interface methods.
Definition: IMaterialAllocator.h:46
Trk::IMaterialAllocator
Definition: IMaterialAllocator.h:38
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::IMaterialAllocator::leadingSpectrometerTSOS
virtual std::vector< const TrackStateOnSurface * > * leadingSpectrometerTSOS(const TrackParameters &spectrometerParameters, Garbage_t &garbage) const =0
IMaterialAllocator interface: material TSOS between spectrometer entrance surface and parameters give...
Trk::IMaterialAllocator::initializeScattering
virtual void initializeScattering(std::vector< FitMeasurement * > &measurements) const =0
IMaterialAllocator interface: initialize scattering (needs to know X0 integral)
Trk::IMaterialAllocator::addLeadingMaterial
virtual void addLeadingMaterial(std::vector< FitMeasurement * > &measurements, ParticleHypothesis particleHypothesis, FitParameters &fitParameters, Garbage_t &garbage) const =0
IMaterialAllocator interface: add leading material effects to fit measurements and parameters.
Trk::FitParameters
Definition: FitParameters.h:29